JSON Web 令牌 (JWT) 太长无法通过客户端 URL? Node.js 和快速身份验证

JSON Web Token (JWT) is too long to pass through client URL? Node.js and Express authentication

我正在尝试使用 JWT 来验证用户的电子邮件地址。我无法使用 OAuth,因为用户将使用他们的工作电子邮件进行注册,并且需要使用该电子邮件进行验证。

我在我的用户模型中添加了一个名为 isVerified 的字段。当用户去注册时,我使用 mailgun 向用户发送了一封电子邮件,其中包含一个 link 到 http://{client_url}/verification/{userToken} 形式的验证页面其中 userToken 是使用 JSON 网络令牌生成的令牌....令牌仅使用用户 ID 创建,因此有效负载中没有很多信息。

当用户单击此 link 时,他们会收到 404 未找到错误。当我手动缩短 url 中的 userToken 时,它会正确连接到正确的 React 组件... 我该如何解决这个问题?

更新:我刚刚从 JWT 令牌中删除了所有时间段,它正在像那样加载....所以它似乎不是长度问题而是时间段问题......我的反应路由器路由路径是“/verification/:userToken”...如何让它不受句点影响?

因为这不会触发您的组件被渲染

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIyLCJpYXQiOjE2MTEwMDY5OTUsImV4cCI6MTYxMTAwODE5NX0.D_-RI_YvE6lyHZFtkMizuHxPs3huIE87D6UKFEywYdg

这确实

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

我怀疑它能以某种方式起作用,因为你去掉了圆点。

确保“.”在令牌中阻止 url 匹配您的“verification/token”路线?我的意思是 React 假设

"verification/eyxxxx.eyzzzz"

不是有效路线。

尝试调用例如“verification/test.test.test”,看看它是否呈现您的组件。