扫码登陆
扫码登录过程
- 用户访问登录页面,前端向后端请求登录的二维码和key,这个key用来索引用户登录状态。
- 服务端生成二维码,并将key(假设是"123")保存(本地或redis),然后将二维码和参数返给前端,这里可以后端生成二维码并上传到OSS,然后返回给前端二维码的地址;也可以直接返回给前端字符串,前端自己去生成二维码
- 前端获取到key="123"和二维码后,就使用key开始轮询登录状态,等待用户扫码登录。(这里的轮询可以用websocket长连接代替)。
- 用户手机已经扫码后,移动端跳转到授权登录页(携带参数key="123")。
- 用户点击登录后,前端调用后端接口,通知后端:“"123"对应的用户是我,我已经授权PC网页登录了,我的用户信息是:XXXXX”。
- 后端找到"123"对应的信息,更新用户登录状态为true,并更新用户信息。前端轮询再发轮询时候,后端发现状态改变,则返回给前端登录成功,并返回登录的用户信息。
- 前端收到登录成功的返回,就更新登录状态,展示用户信息,停止轮询
扫码登陆的优点
安全性
扫码登录相比直接登录更安全,原因如下:
- 多重验证:扫码登录需要在另一台设备上确认登录请求,这增加了验证的复杂性,使得攻击者需要同时控制两台设备才能进行非法登录,从而提高了安全性12。
- 防止钓鱼攻击:扫码登录可以减少用户在不安全网络环境下输入密码的风险,避免了键盘记录器和钓鱼热点的威胁1。
- 二维码的唯一性:每个二维码都是独一无二的,只有在扫描正确的二维码之后才能完成登录,这使得扫码登录成为了一种优秀的身份验证方式,可以有效降低账户被盗风险3。
便捷性
扫码登录相比直接登录更便捷,原因如下:
- 操作简便:用户只需用手机扫描二维码即可完成登录,无需输入复杂的用户名和密码,大大节省了时间3。
- 提升用户体验:扫码登录使得登录过程更加流畅、高效,用户不需要记住或输入大量的密码,提升了整体的使用体验