首页 > 解决方案 > 为什么将电子邮件验证令牌/密码存储在数据库而不是数组中?NodeJs、Express、Typescript

问题描述

我正在构建一个注册和登录的应用程序,所以我需要在注册后验证电子邮件。创建用户后,我想在获取请求中发送带有 jwt 的激活邮件。成功确认电子邮件和令牌未过期后,用户已登录。

我的问题是为什么,我不应该将 jwt local 存储在数组中并在验证请求中检查令牌是否有效,然后将其从数组中删除并将用户注册状态设置为 true?

如果我将令牌存储在数据库中的某个表中并在成功验证后将其删除,我是否可以获得任何好处?还是我根本不应该删除它?

标签: node.jsdatabaseexpressauthenticationverification

解决方案


 const token = jwt.sign(
      {
        email: loadedUser.email,
        userId: loadedUser._id.toString(),
      },
      "somesupersecretkey",
      { expiresIn: "1h" }
    );
    res.status(200).json({ token: token, userId: loadedUser._id.toString() });

无需将令牌存储在数据库中的某个表中,您也可以在验证成功后设置其超时...


推荐阅读