Json Web Token verify() 返回 jwt 格式错误

新手上路,请多包涵
const jwt = require("jsonwebtoken");
const SECRET = "superSuperSecret";

module.exports = function(req, res, next) {
    const token = req.body.token || req.query.token || req.headers[ "x-access-token" ];
    if (token) {
        return jwt.verify(token, SECRET, function(err, decoded) {
            if (err) {
                return res.json({
                    success: false,
                    message: "Failed to authenticate token.",
                });
            }
            req.user = decoded;
            return next();
        });
    }
    return res.unauthorized();
};

我正在使用 Postman 来测试我的 API。我使用 x-access-token 键和值 superSuperSecret 设置标题。我收到错误 {"name":"JsonWebTokenError","message":"jwt malformed","level":"error"} 。我正在使用这个 https://github.com/FortechRomania/express-mongo-example-project/blob/master/src/middlewares/validateToken.js

原文由 Cyril F 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您不能将任何值作为令牌传递。您需要 jwt.sign() 来创建令牌。查看 JWT 的文档以获取更多信息。

还,

对于请求标头名称,只需使用 Authorization 而不是 x-access-token 。将 Bearer 放在 Token 之前。

 Authorization: Bearer TOKEN_STRING

JWT 的每一部分都是一个 base64url 编码的值。你可以得到你的令牌:

 var token = req.headers.authorization.split(' ')[1];

原文由 Sookie Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

注意

JWT 将返回 jwt malformed If Token is null/Invalid-Signature that is being passed to jwt.verifty function

让令牌=空;

让 payload = jwt.verify(token, ‘secretKey’); // 错误:jwt 格式错误

原文由 mabdullahse 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题