【发布时间】:2018-11-27 17:19:25
【问题描述】:
我正在尝试编写身份验证应用程序的密码重置部分。我选择使用 JWT、node.js 和 express,我使用以下逻辑:首先,用户输入他们的电子邮件,然后生成一个令牌并通过密码重置链接发送到用户的邮件。其次,当用户按下链接时,会设置一个功能来检查令牌是否正确以及它是否仍然有效,第三,我有一个功能可以将新密码保存到数据库中。
我不确定的是应该检查令牌的第二步。一些教程说您应该将令牌保存到数据库中,然后将链接中的令牌与数据库中的令牌进行比较。但是,使用 JWT 不将任何内容保存到数据库中作为参考难道不是重点吗?我不应该只使用 jwt.verify 来获取保存在令牌中的信息,然后检查数据库中的用户以及它是否仍然处于活动状态?
这是使用 JWT 的正确方法吗?或者你会推荐我使用 session 而不是 JWT?
【问题讨论】:
-
创建token的时候可以设置一个过期时间,然后验证时会检查token是否有效,不需要保存到db。但是您需要保存生成和验证令牌所需的秘密。
-
是的,秘密将被保存在数据库中。但是这样token就不用存到数据库只存到header了?
-
不,除非您需要添加黑名单以防止此令牌被多次使用,否则您不需要它。否则当你验证它过期或不正确时会出错。客户端发送请求时,需要在header中添加token供后端验证。
标签: javascript node.js express authentication jwt