单用户登录记录(只谈redis实现)
- 用户登录成功生成随机值(uuid或者雪花算法,随意)存在redis(假设key=“token-user:token”,值=“userInfoJson”)
- 每次用户登录只要在全局拦截器获取token并查看redis中是否有此token来判断是否已登录
- 可以在任何地方直接获取用户信息(用户信息发生变更记得更新缓存)
- 此时只能保证用户已登录,无法保证只有一个用户,如果想做用户互踢的功能只能再做一个键值对来存储用户ID和token的对应关系(假设key=“user-token:userid”
值=“token”) - 当想踢某一个违规直接根据用户id查到token直接删除,下一次就会校验不通过就需要重新登录(违规禁用这个东西要在数据库做,可以参考shiro)
- 互踢同样,一个用户登录,此账号再次登录更改userid=》token关系,这样就可以保证只有一个用户在线