移动端微信免登录

 

微信免登录技术实现

设置整个项目的首页为index.vue页

1、首先在路由拦截里判断是否进行过登录操作-index.js

/* 路由拦截 */
router.beforeEach((to, from, next) => {
  const userId= window.localStorage.getItem("userId");
	const { title } = to.meta
	if (title) {
	  document.title = title
	}
  if (to.path !== location.pathname) {
    // 此处不可使用location.replace
    location.assign(to.fullPath)
  } else {
    next()
  } 

 if (to.meta.auth) {
	if (userId) {
		console.log('有userId')
		next();
	} else {
		console.log('没有userId跳登录')
		next({
			path: '/login'
		})
	}
} else {
	next()
}
})

2、当用户第一次进入的时候,必定是没有userId的,所以会跳到登录页去走用户登录,进入login.vue

login 页token未失效  截取地址栏code 获取openid--页面mounted的时候获取code,此时没有token走else,什么都不执行

mounted() {
      document.getElementsByTagName("body")[0].style.height = window.innerHeight + 'px';
      if(window.localStorage.getItem('token')){
      this.getOpenid();//页面mounted的时候获取openid,此时没有code走else,什么都不执行
      }else{
      }
    },
    methods: {
      /* 截取地址栏code */
      getCode(name) {
        let href = location.href;
        return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(href) || [, ""])[1].replace(/\+/g, '%20')) || null;
      },
      // 获取openid
      getOpenid() {
        var wxcode = this.getCode('code');
          if (wxcode) {
            // 微信code与userID进行绑定
            let params = { code: wxcode, user_id:window.localStorage.getItem('userId') }
            wxlogin(params).then((res) => {
              window.location.href = 'http://electronic.bigtax.cn'
            })

          } else {
          }
      },
    }

登录页正常填写登录信息,点击登录是校验信息是否正确

3、登录成功 存储userId  获取code(存储token和userId后,绑定微信免登录并将重定向地址指回当前页,当页面重定向到当前页时,页面mounted的时候获取到了token,此时调用getOpenid方法,截取到了地址栏的微信code,发送给后端将code与userId进行绑定)

  if (!this.$refs.idNum.value || !this.$refs.pwd.value) {
            this.isShowToast = true
            this.toastText = "请先输入身份证号和密码"
          } else {
            this.type = 2
            let params = { type: this.type, identity_num: this.$refs.idNum.value, password: this.$refs.pwd.value}
            login(params).then((res) => {
              if (res.code == 200) {
                this.isShowToast = true
                this.toastText = "登录成功!"
                window.localStorage.setItem('token', res.data.token)
                window.localStorage.setItem('userId', res.data.user_id)
                // // 绑定微信免登录
                window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + this.AppId + '&redirect_uri=' + this.redirect_uri + '&response_type=code&scope=snsapi_base&state=1#wechat_redirect'
              } else {
                this.isShowToast = true
                this.toastText = res.message
              }
            }).catch((err) => {
              console.log(err)
              this.isShowToast = true
              this.toastText = res.message
            })
          }

4、用户登录信息与userId绑定成功,userId与微信code绑定成功,那么用户登录信息与微信code绑定成功,此时绑定成功跳到项目首页,我们在路由守卫中设置了项目主页为index.vue,路由拦截中判断缓存中存在userId了,直接进入首页

这样微信免登录就做好了,当你第一次登陆成功后,下次再进入的话,路由守卫中会判断有userId,直接进入index.vue,就不会走login.vue了。缺陷就是当获取微信code的时候,路由重定向到当前页,会导致页面刷新闪一下,这个微信官方的地址重定向无可避免,当然这只会在登录的时候闪一次,后续不登录不会出现这个小瑕疵。

 

HTML5移动端登录模板是为移动设备用户提供方便快捷的登录界面的模板。该模板使用HTML5技术开发,可以适配不同尺寸的移动设备屏幕,提供用户友好的交互体验。以下是一些常见的特点和设计要素: 1. 响应式设计:该模板能够根据用户设备的屏幕大小和方向进行自适应布局,确保在不同设备上都能够正常显示和操作。 2. 美观简洁:登录界面通常采用简洁的设计和色彩搭配,使用户能够快速找到登录入口和相关操作。 3. 表单验证:在登录表单中,使用HTML5的表单验证功能,对用户输入的用户名和密码进行实时检查,并提供相应的提示信息,确保用户输入的准确性。 4. 手势控制:考虑到移动设备的特性,该模板可能会使用手势控制功能,例如滑动、拖拽等,以提供更直观的操作方式。 5. 记住登录状态:登录模板还可能包括"记住我"选项,方便用户下次登录或自动登录。 6. 第三方登录:为了增加登录的便利性,该模板还可能集成第三方登录功能,比如使用微信、QQ或其他社交账号直接登录。 总之,HTML5移动端登录模板通过简洁的设计、自适应布局和方便的交互,为移动设备用户提供了快捷、安全的登录体验。用户可以通过填写用户名和密码等信息,完成登录过程,访问需要身份认证的功能或内容。这种模板的设计可以帮助开发者减少登录界面的开发成本和时间,并提升用户的登录体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值