【发布时间】:2018-12-07 06:41:00
【问题描述】:
我正在编写应用程序的 API 部分,并且正在使用 JWT 进行身份验证。我现在只是生成一个令牌,并在创建用户时将令牌发送回 json 对象以供前端处理。但这是正确的吗?我不应该将令牌放入后端的标题中吗?因为当我想注销用户时,我想访问标头中的令牌并从后端删除它......
感谢任何回复
【问题讨论】:
-
请记住,即使您“注销”用户,如果他手动复制了 JWT,他仍然可以继续会话。这就是为什么 JWT 不如会话令牌那么好。
-
我知道,我需要创建一个黑名单数据库,这样令牌就不能再次使用了
-
您不需要数据库,您只需在令牌上设置一个生命周期以使其过期,并在您的 JSON 对象响应中将过期时间以毫秒为单位并以创建时间为单位,以便轻松计算在前端。当它过期时,你请求一个新的令牌..
-
好的,但要明确一点。我只应该从后端发送令牌而不是把它放在标题或类似的东西中?这是在前端完成的吗?那么这是否意味着在注销时从标头中清除令牌也是在前端完成的?
-
在哪里完成并不重要,如果您愿意,可以将其放入 cookie 中。使用黑名单完全违背了 JWT 的目的,你应该只是在 cookie 中使用 sessionID。
标签: javascript node.js express jwt sequelize.js