扫码登录功能实现

需求:PC端(电脑端)扫码登录

原理:

1.PC端登录页面提供二维码

2.PC端与APP端 共同维护一个缓存

3.PC端在规定时间内(最长的等待失效时间),不停的扫描缓存中的登录状态;
  若规定内,用户有操作,则进行相应操作的处理;若无操作,则调试二维码失效

4.扫码登录的状态

未扫描
扫描未确认
扫码并确认
二维码超时

实现:

1.PC端登录页面,提供标签页面TAB页,展示二维码登录图形

点击展示二维码的同时,触发相应事件,

进行二维码的初始化,带有一个随机数作为请求参数;若规定时间内未进行扫码,超时后再次扫码,为两次不同的请求;

一个递归调用的function,
ajax请求Java后台,查询当前缓存中用户的扫码状态,若规定时间内未扫码确认,则再次调用本身,向后台发起请求,直到超过指定的时候或用户操作确认

2.扫码

2.1   规定时间内,用户未扫描;提示二维码超时,隐藏二维码,提示刷新页面

2.2   规定时间内,用户扫描了二维码,则进行相应状态的处理

3.PC端Java

提供响应页面端的 action ,在规定内每一秒查询一次缓存中的用户登录状态
若未超时,且用户未确认登录,则返回页面响应,再次重新发起查询
若超时,则响应页面此时已超时,隐藏二维码,提示用户已超时并进行刷新操作

4.APP端Java

用户调用扫码功能,将请求转发到响应的ACTION上,APP端可获取用户的UID
用户扫码,记录一次请求状态
用户扫码未登录,更新一次请求状态
用户扫码并登录,更新一次请求状态,以uuid作为此次请求的key,value为UID

5.PC端Java

当查询到用户已登录,并获取到了UID,设置用户当前登录的SESSION值

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2236972