【问题标题】:How to store Json Web Token in mongodb using node express如何使用 node express 在 mongodb 中存储 Json Web Token
【发布时间】:2023-03-28 01:51:01
【问题描述】:

我尝试通过 mongodb 将 jwt(JsonWebToken) 实现到 node express 中。在生成令牌时,我将令牌值存储到数据库集合中并从 mongodb 检索令牌并将其传递到下一页并设置注销选项,当我触发注销时,数据库中的令牌字段被刷新并且在此之后不再执行任何操作。但问题是,当多个用户登录应用程序时,这是不可能的。因为当我单击注销时,它会清除所有令牌。我怎样才能正确解决这个问题..?

【问题讨论】:

  • 如何保存令牌?额外收藏?还是附加到用户集合中?
  • 使用了一个名为 authentication 的额外集合。
  • 在数据库中存储 jwt 似乎在某种程度上违背了他们的目的。在我看来,您将它们用作会话令牌。
  • 不要将它们存储在数据库中,将它们存储在本地(cookies / html5 网络存储)-stormpath.com/blog/…
  • 本地存储时,没有一键退出的选项。这就是我将其存储在数据库中的原因。

标签: node.js mongodb express token jwt


【解决方案1】:

您可以将其存储在 cookie/会话中。注销时,您可以删除这些值。应该做的伎俩。 评论:如果您不为手机开发应用程序,这个技巧会很好用。用户应该能够在单击注销按钮后从所有设备注销,就像 facebook 在注销前询问的那样。 每个用户都有自己的 user_id 和自己的令牌(您可以根据需要设置到期时间),因此在刷新时获取 user_id 并刷新该特定令牌。

【讨论】:

    【解决方案2】:

    只需输入 req.session.token,通过 token = jwt.sign();

    但仅在身份验证之后。

    在注销时你实际上可以delete req.session.token

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 2016-06-10
      • 1970-01-01
      • 2020-10-31
      • 2012-09-24
      • 2017-08-06
      • 2014-10-18
      • 1970-01-01
      • 2015-09-23
      相关资源
      最近更新 更多