如何将 jwt 令牌添加到 url?

Posted

技术标签:

【中文标题】如何将 jwt 令牌添加到 url?【英文标题】:how to add a jwt token to the 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 对数据库中的哈希有什么策略? 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何将 jwt 令牌添加到 url?的主要内容,如果未能解决你的问题,请参考以下文章

生成访问令牌时如何将 userid 参数添加到 jwt 的有效负载?

如何将一些附加字段添加到此 Spring Boot 服务生成的 JWT 令牌中?

如何将我的 JWT 令牌附加到每个 axios 调用?

如何将 jwt 令牌发送到 node.js 中的受保护路由

如何让 django-rest-framework-jwt 在注册时返回令牌?

如何将JSON Web令牌(JWT)传递给get请求