Cyr*_*l F 2 node.js express jwt postman
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();
};
Run Code Online (Sandbox Code Playgroud)
我正在使用Postman测试我的API。我用x-access-token
键和value 设置标题superSuperSecret
。我弄错了{"name":"JsonWebTokenError","message":"jwt malformed","level":"error"}
。我正在使用这个https://github.com/FortechRomania/express-mongo-example-project/blob/master/src/middlewares/validateToken.js
注意:
JWT 将返回 jwt 格式错误如果 Token 为 null/Invalid-Signature 传递给 jwt.verifty 函数
让令牌=空;
让有效载荷 = jwt.verify(token, 'secretKey'); // 错误:jwt 格式错误
您不能将任何值作为令牌传递。您需要jwt.sign()
创建一个令牌。有关更多信息,请参见JWT的文档。
也,
对于请求标头名称,请使用Authorization
not x-access-token
。将Bearer放置在令牌之前。
Authorization: Bearer TOKEN_STRING
Run Code Online (Sandbox Code Playgroud)
JWT的每个部分都是base64url编码的值。您可以通过以下方式获得令牌:
var token = req.headers.authorization.split(' ')[1];
Run Code Online (Sandbox Code Playgroud)
据我所知,您发送的不是实际的 JWT 令牌,而是秘密。有效的 JWT 令牌由由点分隔的三部分字符串组成,如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQs SW5C
正如您在上面的网站上看到的,“superSuperSecret”不是有效的 JWT 令牌。
归档时间: |
|
查看次数: |
7698 次 |
最近记录: |