一个账号只能一个人同时登录:一个账号只能在一个浏览器中登陆,在另一个浏览器中重新登陆后 前一个浏览器中的登陆信息需要失效。
解决思路:
1.用户登录成功后生成一个随机 loginId。
2.Redis 保存:
账号唯一ID(accountId) -> 当前loginId
3.当前浏览器的 HttpSession 同时保存这个 loginId。
4.每次访问受保护功能时,过滤器比较:
Session中的loginId == Redis中的当前loginId
5.新浏览器登录同一账号时直接覆盖 Redis;旧浏览器下一次操作时比较失败,立即失效 session,并跳转登录页。
6.普通页面请求直接跳转;Ajax 请求返回统一的 401,再由公共 JS 执行 top.location,否则老系统的一些 Ajax 页面只会收到一段 HTML,不会真正跳转。
评论 (0)
请 登录 后发表评论