CNode

有没有什么好的 jsonwebtoken 退出或者修改密码注销token方法?

问答
Ttmirun发布于8 年前最后回复8 年前3 回复4480 浏览0 收藏

不想用 redis,不想存到 RAM 里。

想到的最简单的解决方法:

在你的 user 数据库里加上一列 tokenDate

User tableData tyle
usernameSTRING
passwordSTRING
tokenDateDATE (timestamp)

每次生成 jsonwebtoken 的时候也把 tokenDate 打包进去。 tokenDate 的值会在每次 用户登入,退出或者修改密码的时候更新成最新的 timestamp。 就这样我们每次收到用户的 token 的时候查看 tokenDate 是否和我们数据库保存的一致,如果不一致说明这个token已经废除

缺点很明显

增加数据库查询,虽然是个快速简单的查询,但是 (简单) x (很多很多很多个请求) = '这是个问题'

各位有什么好的方法?

查看回复

回复 (3)

B
blackmatch#1·8 年前

jwt不是应该登录成功的时候在客户端持久性存储的么?每次请求的时候都带上,后端就根据带过来的jwt校验,退出登录的时候,把客户端存储的jwt删掉,下一次请求的时候就没有jwt了,这个时候就需要重新登录了。

C
CaanDoll#2·8 年前

楼上+1。使用jwt服务端应该是无状态的,通过算法来鉴权。

Z
zuohuadong#3·8 年前

之前尝试过,即使用redis ,也不好解决。 唯一可行的方案是把用户表缓存到redis ,然后每次除了 jwt 校验,还得算密码MD5 与redis 中是否一致。

最后我们选择了降低 token 的时效

参与回复
登录后即可参与回复。登录