【发布时间】:2021-04-23 04:55:25
【问题描述】:
我正在尝试使用 JWT 来验证用户的电子邮件地址。我无法使用 OAuth,因为用户将使用他们的工作电子邮件进行注册,并且需要使用该电子邮件进行验证。
我在我的用户模型中添加了一个名为 isVerified 的字段。我在用户注册时使用 mailgun 向用户发送了一封电子邮件,其中包含一个链接到验证页面的链接,格式为 http://{client_url}/verification/{userToken},其中 userToken 是使用生成的令牌JSON Web 令牌....令牌仅使用用户的 id 创建,因此有效负载中没有很多信息。
当用户单击此链接时,他们会收到 404 Not Found 错误。当我手动缩短 url 中的 userToken 时,它会正确连接到正确的 React 组件... 我该如何解决这个问题?
更新:我刚刚从 JWT 令牌中删除了所有句点,它正在像这样加载......所以它似乎不是长度问题,而是句点......我的反应路由器路由路径是 "/verification/:userToken" ...如何让它不受期间的影响?
【问题讨论】:
-
手动缩短url中的userToken是什么意思,可以举个例子吗?
-
@Helix112 是的,当然,我的意思是下面会返回一个 404 错误 localhost:8080/verification/… ......但是当我在第一个句点之前将 JWT 部分截断时,它会正确连接...像这样localhost:8080/verification/…
-
@Helix112 哦,哇,我刚刚从 JWT 令牌中删除了所有句点,它正在像这样加载....所以这似乎不是长度的问题,而是句点的问题。 ..我的反应路由器路由路径是“/verification/:userToken”...你知道我如何让它不受期间的影响吗?
-
第二个令牌不是有效的 JWT。是否“。”在令牌中阻止 url 匹配您的“验证/令牌”路由?我的意思是这样的反应“验证/string1.string2”不是有效的路线。尝试调用例如“verification/test.test.test”并查看它是否呈现您的组件。对于日期的东西,我不知道发生了什么,但我认为这更多的是关于你的反应代码以及你如何编码/解码令牌,而不是 jwt 本身的问题。发布您的代码会有所帮助。
-
@Helix112 您好,感谢您的回复。问题原来是我的 webpack 不允许在 URL 中正确读取点,所以我只是使用了一个辅助函数来替换“。”使用“%dot%”,然后在从 url 读取 jwt 时执行相反的操作。谢谢!
标签: node.js express jwt jwt-auth express-jwt