node.js - JWT 功能在本地有效,但在 heroku 上无效
问题描述
所以我目前正在用 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)
}
解决方案
我今天遇到了完全相同的问题,所以我将在这里分享我的努力:
- 我的 env vars 引用了我的 jwt 机密,在 heroku env 上正确设置(您可以通过控制台记录一个 env var 并查看它在终端上输出来验证这一点
heroku logs --tail
) - 我在用户登录和注册时返回了一个有效的 jwt(您可以使用出色的https://jwt.io/调试器进行验证)
那么发生了什么事?在我的 auth 中间件处理 jwt 解码部分的 try/catch 块中,我安慰了我的错误,我发现......我在 Heroku 上部署的应用程序与我的时区不同(部署在美国我住在欧洲)=>
我不知道您的问题是否与此有关,但可能值得检查您的令牌到期设置和您部署的应用程序的时区设置
推荐阅读
- python - 如果请求的索引在整数索引标签之间,pandas 数据帧中是否有内置方式来包含切片的下一行/上一行?
- ios - 将浮点数列表从文件加载到 MLMultiArray
- django - django switch 语言不起作用(i18n)
- c++ - 为什么我应该在下面的例子中省略大括号?
- django - Django Api Json 格式更改
- python - 如何在opencv python中获得低对比度图像的边缘
- postgresql - PostgreSQL:选择没有页眉/页脚行的语句
- python - 高波动数据优化与预测
- flutter - 无法使用 GetX 显示下拉菜单按钮值
- azure - Quarkus:MDC 未在 Azure Application Insights 中公开