扫码授权登录

278 阅读1分钟

这个过程我大致的了解如下:

  • 首先我们在登陆页面点击使用二维码登录,页面会跳出一个二维码登录,这个过程浏览器携带着自己的一些信息(比如appid、state、appsecret、redircturi等等)发送给服务器,服务器生成一个UUID,并将其保存在redis中作为key值,同时为其设置了过期时间,随后将这个UUID和本公司的一些验证信息生成了这个二维码。随后就携带这个UUID开始一秒进行一次轮询,看用户是否登录了。
  • 用户扫码之后,从二维码解析出了UUID和一些验证信息,因为手机端是处于已经登录的状态,所以手机端会携带解析到的信息和登录的token(其中包含用户的userid)向服务器发送验证登录请求,服务器进行验证,如果是,则将返回一个确认信息,手机收到后,将登录确认框显示在手机上,这样给了用户选择可以防止用户误操作。
  • 用户点击确认登录,再次向服务器发送请求,表示确认登录,服务器会将拿到的userid作为value放到刚刚以UUID为key的redis中。
  • 随后在浏览器的轮询到达的时候,会得到这个userid,调用登录的方法,将useid生成一个浏览器的token,当浏览器再一次发送轮询请求的时候,携带这个token,于是服务器会将用户的信息返回给浏览器,登陆成功。