结合市面上的应用分析如何实现App扫码登录功能

  • 背景  

有Web端+App端的应用如:学习强国、京东、支付宝、微信等,Web登录页面有扫码登录方式。我司的产品有类似的情况,也都是有两端,各端可以通过账号密码、验证码、三方登录,但缺少扫码登录这一方式。

  • 优势 
  1. 扫码登录可以避免被攻击者肉眼看到或拍摄到,用手机App扫码提高了安全性。
  2. 各类应用需要设置密码的地方越来越多,密码设置的越来越复杂,输入的时候容易出错,而现在手机使用率很高,扫码登录提高了便捷性。
  3. 扫码登录的增加会使App的下载和活跃得到增长。
  • 技术方案

    扫码登录时序图如下:

  1. 用户在浏览器中输入网址;
  2. 服务器收到用户申请登录二维码的请求后,随机生成一个唯一标识符UUID,并将这个UUID当做一个键值对的Key存入后台Redis,同时设置一个过期时间,过期后用户登录二维码需要进行刷新重新获取。
  3. 服务器将这个key值和本公司的验证字符串合在一起,通过二维码生成接口生成一个二维码的图片,将二维码图片和UUID一起返回给用户浏览器;
  4. 浏览器拿到二维码和UUID后,会每隔一段时间向后台发送一次请求,请求中携带有UUID作为当前页面的标识符;
  5. 用户拿出手机用微信或其它三方应用扫码,应该提示下载该应用App(在生成二维码图片的时候做判断);
  6. 用户打开该应用App,需保持登录状态(有登录Token值),扫码后解析得到UUID值;
  7. App将Token+UUID一起作为参数向服务端发送验证登录请求;
  8. 服务器收到请求后,首先对比参数中的验证信息确定是否为合法,如果合法将这个用户的UUID-UserID作为键值对存入Redis;
  9. 二维码登录页不停的轮询是否登录成功,依据就是Redis中存在UUID-UserID键值对,如果存在,服务端生成该用户登录信息返回给Web前端,刷新显示登录页面。
  • 关键点说明

二维码失效和轮询次数及时间的选择,以下各应用实践供参考

学习强国:75次、4s/次,5分钟后失效

 京东:60次、3s/次,3分钟后失效

 支付宝:130次、3s/次,6.5分钟后失效 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值