使用的shiro-redis-spring-boot-starter的包,但发现前后同一账户两次登录产生的不同token都能进行相关用户权限的操作,这显然不符合逻辑。理想的状态是,当用户再次登录后,只有新生成的token有效,这样防止用户在不同客户端登录忘记退出造成的问题,请问可以实现么?我是新手。
使用的shiro-redis-spring-boot-starter的包,但发现前后同一账户两次登录产生的不同token都能进行相关用户权限的操作,这显然不符合逻辑。理想的状态是,当用户再次登录后,只有新生成的token有效,这样防止用户在不同客户端登录忘记退出造成的问题,请问可以实现么?我是新手。
单纯在 token 这一块是无法实现的。需要借助后端,用户登录后,记录登录时间,token 的 签发时间issue at 设置为登录时间, 然后校验token 的时候,token 解密后,拿出uid,再拿到最后登录时间,然后对比 issue at和最后登录时间,如果签发时间在登录时间之前,这个token 就是无效的。
具体的验证粒度,看你业务,有些要求用户只能一个登录,有些要求用户可以每个端登录一个,有些要求不限制,只要token 没过期就可以,,除了最后一个过期的,前面的两种只是记录的最后登录时间的粒度不同,其他都是一样的
1 回答1.3k 阅读✓ 已解决
4 回答961 阅读
4 回答873 阅读
1 回答2.8k 阅读
583 阅读
485 阅读
数据库或者redis保存userId和token的对应关系。根据token读取userId,老token是读不到userId的,因为对应关系没了。也就实现了唯一登录