初始请求与uuid生成
接到请求,服务器会生成一个独一无二的识别码。这相当于一个小型的数字抽选,每个结果都独具特色。随后,这个识别码作为索引,被保存在redis服务器上。以电商平台为例,当用户在网页上登录时,就会执行这一步骤。此外,数据存储将设定一个时效,比如3分钟。时间到了,用户就得更新二维码,这样才能再次获得登录资格。
用户id信息存储
用户的ID资料被存放在这里,手机服务器将其保存在名为redis的数据库里。该服务器承担着信息存储和防护的任务,旨在保障用户关键信息的安全。以社交平台为例,用户使用手机登录时,其ID资料会安全地存入redis,为后续的登录验证步骤做好准备。
扫码获取验证信息
扫描手机上的二维码,用户便可以获取验证信息和uuid。网上有众多示例代码,详细介绍了如何通过二维码扫描获取字符串的方法。在日常生活中,比如在超市自助结账或餐厅点餐时,我们也会通过扫码来获取链接,其原理和二维码扫描类似。这一功能让用户在扫描后能快速获取登录所需的关键信息,极大地简化了后续步骤,既方便又高效。
手机端安全取值
登录手机端后,访问服务器时,系统会带上用户的标识。服务器利用这个标识来识别用户的ID,这样的做法主要是为了确保信息安全。如果直接发送用户ID,可能会被他人截获或篡改,但标识经过加密处理,被篡改的几率就小多了。这就像银行APP登录后,通过扫描二维码登录网上银行,采取的也是类似的安全手段。
https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do?lgToken=2c3b4d53ef0513787bf4ce711ea5ba53&defaulturl=&_ksTS=1540106757739_2804&callback=jsonp2805
发送验证登录请求
手机应用会将解析后的数据与用户凭证一同发送,向手机服务器提出登录验证的请求。要留意的是,手机服务器和网页服务器是分开的。比如在线教育平台,手机应用和网页的服务器是各自安装在不同的地方。服务器在收到请求后,会先检查验证信息,确保这是用户的登录请求,以此来确保登录请求的有效性。
{
"code": "10001",
"message": "mobile scan QRCode success",
"success": true
}
浏览器端登录完成
浏览器再次发送请求时,服务器接收到用户标识,随后进行登录并生成浏览器端的凭证。在后续的请求中,服务器将用户信息发送回浏览器,这表示登录过程已经结束。我们只保存用户标识而非所有信息,因为手机和浏览器上的用户数据可能存在不一致。比如,某些办公软件在手机版和网页版之间就有信息上的不同。
{ "code": "10006", "success": true, "url": "https://login.taobao.com/member/loginByIm.do?uid=cntaobaoxxx&token=ff82fc0d1d395a33d3b38ec5a4981336&time=1530179143250&asker=qrcodelogin&ask_version=1.0.0&defaulturl=https://www.taobao.com&webpas=0b7aed2d43f01825183e4a49c6cae47d1479929926"}
扫码状态与结果
扫码登录后,系统会有所反应。要是手机没扫码或者没得到授权,系统大约25秒后会返回408状态码,前端会不断尝试查询。这种情况就像玩家在游戏中扫码登录时,犹豫不决,没完成授权。如果扫码成功,服务器会立即发送201状态码和用户资料,前端也会持续进行查询。微信网页版登录时,通过JSONP技术来传输数据,这样做是为了解决跨域访问的限制。
扫码技术现在被广泛用于各行各业,不再局限于即时通讯工具。不少移动平台的线上服务也开始应用这项技术。你有没有在其他地方遇到过有趣的扫码登录方式?欢迎在评论区告诉我们,别忘了点赞和分享这篇文章!