项目架构: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方法
过滤器