有没有什么好的 jsonwebtoken 退出或者修改密码注销token方法?
不想用 redis,不想存到 RAM 里。
想到的最简单的解决方法:
在你的 user 数据库里加上一列 tokenDate
User table | Data tyle |
---|---|
username | STRING |
password | STRING |
tokenDate | DATE (timestamp) |
每次生成 jsonwebtoken 的时候也把 tokenDate 打包进去。 tokenDate 的值会在每次 用户登入,退出或者修改密码的时候更新成最新的 timestamp。 就这样我们每次收到用户的 token 的时候查看 tokenDate 是否和我们数据库保存的一致,如果不一致说明这个token已经废除
缺点很明显
增加数据库查询,虽然是个快速简单的查询,但是 (简单) x (很多很多很多个请求) = ‘这是个问题’
各位有什么好的方法?
3 回复
jwt不是应该登录成功的时候在客户端持久性存储的么?每次请求的时候都带上,后端就根据带过来的jwt校验,退出登录的时候,把客户端存储的jwt删掉,下一次请求的时候就没有jwt了,这个时候就需要重新登录了。
楼上+1。使用jwt服务端应该是无状态的,通过算法来鉴权。
之前尝试过,即使用redis ,也不好解决。 唯一可行的方案是把用户表缓存到redis ,然后每次除了 jwt 校验,还得算密码MD5 与redis 中是否一致。
最后我们选择了降低 token 的时效