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 时无效
对远程站点的本地 AJAX 调用在 Safari 中有效,但在其他浏览器中无效