
最近看到了 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 省的查库。 |