H5W3
当前位置:H5W3 > java > 正文

【Java】token如何确保用户登录的唯一性

使用的shiro-redis-spring-boot-starter的包,但发现前后同一账户两次登录产生的不同token都能进行相关用户权限的操作,这显然不符合逻辑。理想的状态是,当用户再次登录后,只有新生成的token有效,这样防止用户在不同客户端登录忘记退出造成的问题,请问可以实现么?我是新手。

回答

单纯在 token 这一块是无法实现的。需要借助后端,用户登录后,记录登录时间,token 的 签发时间issue at 设置为登录时间, 然后校验token 的时候,token 解密后,拿出uid,再拿到最后登录时间,然后对比 issue at和最后登录时间,如果签发时间在登录时间之前,这个token 就是无效的。

具体的验证粒度,看你业务,有些要求用户只能一个登录,有些要求用户可以每个端登录一个,有些要求不限制,只要token 没过期就可以,,除了最后一个过期的,前面的两种只是记录的最后登录时间的粒度不同,其他都是一样的

数据库或者redis保存userId和token的对应关系。根据token读取userId,老token是读不到userId的,因为对应关系没了。也就实现了唯一登录

最骚的就是把以前的token干掉或者加白名单这种,让她失效即可

本文地址:H5W3 » 【Java】token如何确保用户登录的唯一性

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址