首页 > 解决方案 > 使用 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'
        });
    }
};

在我看来,这段代码根本没有启动,因为我添加的消息没有显示在控制台中。

授权有什么问题?

标签: node.jsherokuauthorizationjwt-auth

解决方案


推荐阅读