事假起因
像往常一样,准备往阿里网盘里面保存学习资料(真的是学习资料,天地可鉴)。拿起手机准备扫描阿里网盘的二维码登陆。这边顺便吐槽下阿里网盘,基本上每次进去都要登陆,能不能学学百度完网盘。直接打开就用。当我扫描成功后,登陆的却是另外一个账号?我一脸懵逼,what?我原来的资源呢?我的学习资料呢?
然后我仔细研究,发现我常用的账号绑定的手机号为135----8006,然后扫描网页就用我这个手机号直接登陆的,然后生成了一个全新的账号。但是我这个常用的账号用我的另一个手机号156----8096验证码方式登陆却可以正常登陆。也就是说,阿里网盘的扫码登陆不是用我手机客户端的登陆的token去置换用户信息,而是是用手机号直接获取用户信息。从而产生了严重的BUG。
说说扫码登陆
扫码登陆,我们生活中甚是常见,像淘宝,JD,QQ等,也是我们经常使用的。但是扫码登陆的原理你真的了解吗?
其实每个公司的扫码登陆方式都相同,按我就用我司的扫码登陆说说其中的奥秘。
原理解析
后端:负责生成二维码,校验二维码,是否被扫描以及最后的登陆成功返回等
前端:展示二维码,检查二维码是否被扫描等
移动端:扫描二维码,点击扫描后的确认登陆等。
- 首先前端网页点击二维码登陆,后端接受到请求后,随机生成uuid,是否被扫描,是否扫描登陆等信息,并储存到redis中,当然要设置失效时间。最后返回这些信息。
- 前端根据后端返回的uuid像后端请求二维码。后端返回二维码信息。(其实和第一步可以合成一步)
- 前端轮训请求二维码是否被扫描。如果移动端扫描了该二维码,则是否被扫描的状态赋值成true,移动端弹出是否登录。二维码被扫描后,前端页面替换二维码为扫描成功,轮训请求依然继续。
- 在移动端上点击确认登录。携带移动端上已近存在用户的token和uuid,后端根据信息查询用户信息,并且通过轮序接口返回用户信息,完成登录操作;如果取消,则继续轮序操作,否被扫描的状态赋值成false。
评论区