Java实现多个设备使用同一个账号强制下线,客户端弹窗提示

217 阅读1分钟

项目架构:Spring Boot、Spring Security、Redis

实现方式(非长连接):

AB两个用户使用同一个账户登录

UserA登录:进入login方法,token存入redis,登录成功获取返回的token,拿token去访问getUserInfo接口

UserB登录:进入login方法,根据用户信息模糊匹配已存在的token,如果有,则删除该token,并将该token拼接前缀key,存入redis。同时刷新用户此次登录的token

UserA拿着旧的token去访问接口,被过滤器拦截,拿token拼接定义好的前缀key,去redis查询,发现有,则返回402状态码 “您的账号已在其他设备登录,请重新登录“

客户端拿到状态码402提示弹窗

如果UserA也去登录,重复此操作

以下是两块逻辑代码

login方法

过滤器