【问题标题】:how to add a jwt token to the url?如何将 jwt 令牌添加到 url?
【发布时间】:2021-01-17 15:17:11
【问题描述】:

我想允许用户重置他们的密码。为此,我首先检查他们的电子邮件是否存在于数据库中,如果存在,我会向他们发送一封电子邮件,其中包含指向重置密码页面的链接。为了确保链接安全,后者使用了一个有效期仅为 1500 万的 jwt 令牌。

但是,由于有“。”,所以无法访问该网址。在 jwt 中:

http://www.myapp.com/reset-password/eyJhbGciOInR5cC.ICJlywY2svp6eL98LHd.RpYylmPI

如果我删除点,则可以理解 url(顺便说一下,我使用 React 路由器)。如何解决这个问题?是否有另一种方法可以使用临时 url 实现此重置公式?

【问题讨论】:

  • . 不是无效的,也不需要使用 encodeURIComponent 等进行编码,您需要修复如何处理传入的路由参数,因为这就是问题所在。顺便说一句,当您可以制作一个小哈希并使用日期存储在数据库中时,jwt 似乎过多
  • 刚刚尝试捕捉带点的字符串,express成功捕捉到了。你能提供更多信息吗?使用 express@4.17.1 app.get('/reset/:pass', (req, res) => { /* decrypt here, and continue */ res.send(req.params.pass)})
  • @DenisRohlinsky 我使用 React 和 react-router。这是一个单页应用程序,页面不是由服务器提供的。服务器仅用于处理数据库事务。我的路由定义如下:。如果令牌包含“.”,它会崩溃。
  • @LawrenceCherone 对数据库中的哈希有什么策略?

标签: node.js express jwt change-password


【解决方案1】:

不要将 JWT 令牌作为 GET 参数发送,而是通过 Authorization: Bearer 发送您的 JWT 令牌,我建议这样做(有关详细信息,请参阅 https://www.rfc-editor.org/rfc/rfc6750

如果您使用 Axios 来处理您的请求,那么您可以通过there查看答案

作为标题的示例,您可以find here

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 2017-05-30
    • 2023-03-27
    • 2021-06-19
    • 2019-08-23
    • 2020-05-06
    • 1970-01-01
    • 2018-04-11
    • 2013-07-02
    相关资源
    最近更新 更多