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 许可协议
您不能将任何值作为令牌传递。您需要
jwt.sign()
来创建令牌。查看 JWT 的文档以获取更多信息。还,
对于请求标头名称,只需使用
Authorization
而不是x-access-token
。将 Bearer 放在 Token 之前。JWT 的每一部分都是一个 base64url 编码的值。你可以得到你的令牌: