17 条回复  ·  152 次点击
fox0001 小成 2024-10-7 00:32:58
@wxf666 #11 放到 redis 的话,就是 session 了
bluearc 小成 2024-10-7 00:54:51
可以,在下发 jwt 前先存储 tokenid ,用户登出后销毁 tokenid,不过这样事实上也就变成 session 了,如果 tokenid 过期时间长的话可以用黑名单,时间短的话还是仅记录每个用户最新的 tokenid
qsnow6 小成 2024-10-7 01:07:32
jwt 主要是用于资源鉴权使用的,登录状态的保留最佳实践就是 session 。我司 PHP 就是把 jwt 当 session 使用,导致服务器要踢用户下线时(改密码、修改权限)非常麻烦。
amlee 小成 2024-10-7 01:19:29
jwt 的设计理念就是无状态呀,你这“登出”的功能本身就是有状态的设计。
如果强行使用 jwt 来做登录、登出,那么必然后台要维护一个 jwt 的黑名单,这就又把状态引入回来了

直接用 session 就好了
iseki 小成 2024-10-7 05:51:58
即使这样我觉得用 JWT 也不是不行:
1. JWT 有标准化的规格说明,IETF RFC ;
2. 没必要为了节省传递 token 的那点流量把自己的路堵死,日后万一需要无状态降级也有机会;
vishun 小成 2024-10-7 08:08:09
jwt 压根不适合普通的用户登录,应用场景也非常有限,像是 ruoyi 系统这种用 jwt 作为普通 token ,只增加了解析复杂度和 token 长度这些缺点,换成随机字符串要好很多。
lairdnote 小成 2024-10-7 08:25:24
有 refresh  时间短点就搞定啊
xuanbg 小成 2024-10-7 10:20:26
你这个就别用什么 JWT 了,一个 sessionId 发给用户,然后后端根据这个 id 来读取用户权限进行鉴权就好了。把一堆的授权信息放在 JWT 里面,纯纯的浪费流量
12
返回顶部