JWT 功能在本地有效,但在 heroku 上无效

Posted

技术标签:

【中文标题】JWT 功能在本地有效,但在 heroku 上无效【英文标题】:JWT functionality works locally but not on heroku 【发布时间】:2020-11-04 19:59:39 【问题描述】:

所以我目前正在使用 nodejs、express、mongodb、jwt 和 hbs 构建一个 todo 应用程序。我让一切都在本地工作,但是当我最终将我的站点部署到 heroku 时,我要么得到一个无法识别的令牌,要么得到一个内部服务器错误(错误代码 500),换句话说,一个“JWT 无效令牌错误”。那么为什么它在部署时不工作,但在本地工作?我该如何解决它。

使用此标记时,令牌返回未定义

const authHeader = req.headers["cookie"].split(" ")[1]
console.log(authHeader)
if(authHeader !== undefined) 
    token = authHeader.substring(6)
    console.log(token)

但是没有那个,并且只是使用这个,我得到了整个令牌,但是一个 JWT 无效令牌错误。

const authHeader = req.headers["cookie"]
console.log(authHeader)
if(authHeader !== undefined) 
    token = authHeader.substring(6)
    console.log(token)


【问题讨论】:

【参考方案1】:

我今天遇到了完全相同的问题,所以我将在这里分享我的努力:

引用我的 jwt 密码的我的 env var 已在 heroku env 上正确设置(您可以通过控制台记录一个 env var 并使用 heroku logs --tail 在您的终端上看到它输出来验证这一点) 我在用户登录和注册时返回了一个有效的 jwt(您可以使用出色的 https://jwt.io/ 调试器进行验证)

那么发生了什么?在我的 auth 中间件处理 jwt 解码部分的 try/catch 块中,我安慰了我的错误,我发现......我在 Heroku 上部署的应用程序与我的时区不同(部署在美国我住在欧洲)=>

我不知道您的问题是否与此有关,但可能值得检查您的令牌到期设置和您部署的应用程序的时区设置

【讨论】:

以上是关于JWT 功能在本地有效,但在 heroku 上无效的主要内容,如果未能解决你的问题,请参考以下文章

Magnific Popup Lightbox 在 Ruby on Rails 开发中有效,但在部署到 Heroku 时无效

应用程序在开发中有效,但在部署到 heroku 时无效

IOS 推送通知在本地有效,但在 bluehost 上无效

对远程站点的本地 AJAX 调用在 Safari 中有效,但在其他浏览器中无效

生成 .rdlc 报告在本地有效,但在部署到 azure 后无效

如何在我的 axios 发布请求中正确添加标头,发布路由在邮递员中有效,但在使用 axios 时无效