最近看到了 json web token 这个东西,发现其实它也是无状态的,不能主动的控制失效,如果我之前登录了,然后我去修改密码,我用之前的 jwt 访问接口不是还是可以通过校验吗?它真正的使用场景是什么样的啊?
1
agagega 2018-11-12 21:44:56 +08:00
不能撤销授权本来就是 JWT 的一大缺点,所以反过来它也有自解释而不依赖数据库的优点
|
2
zjp 2018-11-12 22:49:17 +08:00 via Android
我在用一个类似 JWT 的鉴权方式,实现密码修改和账号注销的功能时发现了这个问题……真的需要实时失效的话,把失效 JWT 存到缓存算一个烂方法,这样所有 JWT 都要查一次。其实就是数据放服务器还是客户端的问题。
|
3
dennissky OP @zjp 其实感觉 jwt 还是有点鸡肋,可能是场景没有选择好,之前都是自定义一个 uuid 存到 redis,把这个 uuid 返给客户端
|
4
rim99 2018-11-13 19:51:06 +08:00 via Android
如果把它当 session 用,那就有很大的问题。只有在 api 对状态的及时性没有要求的时候,jwt 一部分功能和 session 重叠。
看过一篇文章,最好的场景是在电子流系统里,拿到上一节点的审批签名,然后在下一步带上 token 省的查库。 |