2. 结合redis实现
核心思路
1. 用户登录认证
2. 认证成功,根据用户信息生成token,同时,<b>username </b>作为redis key<br>并且设置过期时间。将token返给客户端(该token不设置过期时间)
3. 客户端携带token访问服务器
4. 服务器解析token,获取用户名,然后去redis中查询,如果没有,认证失败,有则成功
注销登录
1. 根据用户名,删除redis中的key
2. 用户再次携带该token访问时,就会找不到key认证失败
权限更新
1. 权限更新时,根据用户名找到redis中存的用户信息
2. 从数据库查询最新的权限,替换该用户信息
token刷新
1. 客户端访问时,查询剩余过期时间
2. 若小于某个值,更新redis过期时间
存在的问题
1. 本质上变成了基于redis认证,jwt貌似没啥用了,就是生成了一个token
2. 违背了jwt的初衷,就是无状态,使用redis变成了有状态,和传统的session一样了