一篇文章搞懂移动端扫码登录

扫码登录是一种基于二维码技术的身份验证解决方案,它通过已登录的移动应用扫描网页生成的二维码来实现快速登录,无需手动输入账号密码。这一技术不仅提升了登录的安全性和便利性,还简化了用户操作,提高了登录效率。本文将详细介绍扫码登录的原理、实现步骤及关键技术点。

请添加图片描述

扫码登录的基本原理以及实现步骤

扫码登录涉及客户端(通常是手机APP、移动端H5、微信小程序等)、服务端以及用户pc端浏览器三者之间的紧密互动。基本流程如下:
在这里插入图片描述

  1. 网页端生成二维码:用户访问网页端时,服务器生成一个唯一的标识符,连同请求的URL一同封装成二维码。此二维码不仅包含身份识别信息,还关联着由服务器端初始化的扫码状态。二维码的生成通常使用开源库如qrcode库。
//nodejs示例
router.get('/get_login_sign', (req, res) => {
  let sign = '' + Date.now() + getRandomStr(4)
  redis.hget('login_sign', sign, async (redis_e) => {
    if (redis_e.code == 200) {
      res.send(statusCode.loginSignFailed)
    } else {
      const qrCodeData = await QRCode.toDataURL(JSON.stringify({
        type: 'login',
        sign
      }), { type: 'png' });
      redis.hset('login_sign', sign, '-1', 15 * 60)
      res.send({
        ...statusCode.success, ...{
          data: {
            sign,
            code: qrCodeData
          }
        }
      })
    }
  })
})
  1. 监听扫码状态:网页端启动一个定时器,定期向服务器查询此二维码的扫码状态,以实时反馈给用户。
//微信小程序示例
wx.scanCode({
      success(res) {
        if (res.result) {
          let e = JSON.parse(res.result)
          if (e.type == 'login') {
            request.post('/admin_login/bind_login_sign', {
		      user_id: 888,
		      sign: e.sign
		    }).then(res => {
  		    })
          }
        }
      }
    })
  1. 移动端扫码:用户使用已登录的APP扫描网页上的二维码,APP解码后获取到服务器生成的唯一的标识符。

  2. 通知服务器:APP向服务器发送请求,携带用户身份信息(Token)及二维码的唯一标识,通知服务器扫码以及授权行为的发生。

  3. 完成登录:Web端通过轮询检测到二维码状态变为“授权成功”后,从服务器获取用户信息,完成登录过程。

结论

扫码登录作为一种创新的认证方式,以其独特的便捷性和安全性,在诸多应用场景中展现了强大的生命力。通过了解扫码登录的基本原理、实现步骤及关键技术点,我们可以更好地应用这一技术,提升用户体验和系统安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初辰ge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值