【问题标题】:Nodejs get 401 Unauthorized with secure route jwtNodejs 使用安全路由 jwt 获得 401 Unauthorized
【发布时间】:2020-10-20 01:37:45
【问题描述】:

我在 js 节点和 mysql 中做了一个后端,以便能够使用 jwt 登录和访问安全路由。 到目前为止,我可以登录并获得一个令牌。我创建了一个受中间件保护的路由(如下面的代码),但是当我尝试获取此路由时,我总是收到 401 Unauthorized 和错误“您的会话无效”。我一步一步地遵循this 教程,但对我不起作用。完整代码在链接中了解详情。

提前致谢:)

module.exports = {
    isLoggedIn: (req, res, next) => {
        try {
            const token = req.headers.authorization.split(' ')[1];
            const decoded = jwt.verify(
                token,
                'SECRETKEY'
            );
            req.userData = decoded;
            next();
        } catch (err) {
            return res.status(401).send({
                msg: 'Your session is not valid!'
            });
        }
    }
};

【问题讨论】:

  • 查看err 对象中的内容可能很有用。
  • @RobertHarvey 感谢您的回复。我得到“未定义 jwt”
  • 真是浪费时间……解决了!下次,我会记录错误^^。谢谢!
  • 你的代码中有const jwt = require('jsonwebtoken');吗?
  • 是的,我只是用 import jwt 修复它

标签: javascript mysql node.js jwt middleware


【解决方案1】:

我知道你想通了

我的意思是(或我的问题)在于这行代码

req.headers.authorization.split(' ')[1]

这是错误的,当我刚刚给你发送一个类似的令牌时会发生什么

tokennnnnnnnnnn

所以我的修复是这样的(通常它会是“Bearer”)

那为什么不这样呢

req.header.authorization.replace(/bearer/i, '')

类似的东西我认为它会很好!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 2018-08-06
    • 2015-03-13
    • 1970-01-01
    • 2017-12-27
    • 2018-02-12
    • 2020-04-30
    • 2021-06-17
    相关资源
    最近更新 更多