0%

二维码登陆原理

基本实现原理

  1. 网页端和服务器配合逻辑
    首先用户打开网站登陆界面时,向服务器发送获取登陆二维码的请求。服务器收到请求后,随机生成一个uuid,将这个id作为key值存入redis服务器,同时设置一个过期时间,过期后,用户登陆二维码需要进行刷新重新获取。

    同时,将这个key值和本公司的验证码字符串合在一起,生成一个二维码图片,将后将二维码图片和uuid一起返回给浏览器。

    浏览器拿到二维码和uuid后,会每隔一秒向浏览器发送一次登陆是否成功的请求。请求中携带有uuid作为当前页面的标识符。

  2. 手机端与服务器端配合逻辑
    浏览器拿到二维码后,将二维码展示到网页上,并给用户一个提示:打开扫一扫进行登陆。

    用户扫描二维码后,就可以得到一个验证码和一个uuid。

    手机端访问服务器,参数中会有token,手机端服务器可以从中得到用户的userId。手机端将解析到的数据和用户token一起作为参数,向服务器发送验证登陆请求。

    服务器收到登陆请求后,返回登陆确认信息给手机端。

    手机端收到返回后,进行登陆确认。确认后再次返送请求,服务器拿到userId和uuid后,将用户的userId作为value存入redis

  3. 登陆确认后,浏览器逻辑

浏览器每秒发送时候登陆成功的请求,确认登陆成功后,可以获取登陆用户的userId。

流程图如下:
qrcode login