jWT
2021-07-23 21:48:24 20 举报
AI智能生成
登录查看完整内容
jwt认证流程
作者其他创作
大纲/内容
使用UsernamePasswordAuthenticationFilter即可
也可以使用邮箱登录
1. 用户登录时进行认证
使用AuthenticationSuccessHandler
代码实现
2. 认证通过生成jwtToken,放入header中
放入header中
3. 客户端访问接口携带jwtToken
使用filter,成功后放入SecurityContext
4. 服务端验证jwt合法性
核心思路
1. 没法自动续期
2. 注销登录后以前的token还能用
3. 权限变更后需要重新登录
存在的问题
1. 不依赖redis,纯用jwt设计
1. 用户登录认证
2. 认证成功,根据用户信息生成token,同时,username 作为redis key并且设置过期时间。将token返给客户端(该token不设置过期时间)
3. 客户端携带token访问服务器
4. 服务器解析token,获取用户名,然后去redis中查询,如果没有,认证失败,有则成功
1. 根据用户名,删除redis中的key
2. 用户再次携带该token访问时,就会找不到key认证失败
注销登录
2. 从数据库查询最新的权限,替换该用户信息
权限更新
1. 客户端访问时,查询剩余过期时间
2. 若小于某个值,更新redis过期时间
token刷新
1. 本质上变成了基于redis认证,jwt貌似没啥用了,就是生成了一个token
2. 违背了jwt的初衷,就是无状态,使用redis变成了有状态,和传统的session一样了
2. 结合redis实现
实现方案
核心观念,由客户端去维护登录状态,服务端不做保留
1. 续签问题
2. 注销问题
3. 密码权限重置
解决方案
JWT
不是很好用,了解下即可
0 条评论
回复 删除
下一页