node.js - 使用 JWT Token 在 Heroku 上部署的应用程序中的授权
问题描述
在完成应用程序的后端部分和测试后,我尝试在 Heroku 服务器上运行它。所有消息的本地注册和接收工作。
我的 App Warbler
在 Heroku 服务器上,只有注册有效,注册成功后 Token 发送给客户端。为了接收消息,客户端将 Token 添加到请求正文中。服务器回复我没有被授权:
2019-09-24T08:22:02.047721+00:00 heroku[router]: at=info method=GET path="/api/messages" host=warbler-server-md.herokuapp.com request_id=849b48c9-caa9-4e7c-b38c-b614988b88e4 fwd="178.159.232.145,3.88.204.168" dyno=web.1 connect=1ms service=2ms status=401 bytes=293 protocol=https
最可能的问题是 Token 认证:
exports.ensureCorrectUser = function(req, res, next) {
try {
const token = req.headers.authorization.split(' ')[1];
jwt.verify(token, process.env.SECRET_KEY, function(err, decoded) {
console.log("token", token);
console.log("decoded", decoded);
if (decoded && decoded.id === req.params.id) {
return next();
} else {
console.log(err);
return next({
status: 401,
message: 'Unauthorized'
});
}
});
} catch (error) {
console.log('Unauthorized!');
next({
status: 401,
message: 'Unauthorized'
});
}
};
在我看来,这段代码根本没有启动,因为我添加的消息没有显示在控制台中。
授权有什么问题?
解决方案
推荐阅读
- java - 在 do/while 中导致无限循环的异常
- reactjs - React Typescript:无需转换为类型或枚举的字符串道具的智能感知建议
- javascript - 使用电子渲染器目标时选择由 webpack 处理的选择性 ES 功能
- azure-cognitive-search - 我可以在 Azure 认知搜索中使用可选筛选器吗
- git - .gitignore 不会忽略特定文件
- docker - 尝试在 docker 容器中运行 GUI 时为什么出现“无效的参考格式”?
- php - 更改单元格的 textFormat 会破坏 Google 工作表中的超链接
- python - 是否可以修改存在于函数范围之外的列表?
- python - 如何从同一id/person的其他行填充大型数据框中的缺失数据?
- c - 使用 mingw 从 Linux 编译 SDL2 windows EXE '应用程序无法正确启动'