【问题标题】:JWT functionality works locally but not on herokuJWT 功能在本地有效,但在 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)
}

【问题讨论】:

    标签: node.js express heroku jwt authorization


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2022-07-24
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多