我以推荐的形式发送标题 Authorization: Bearer <token>
.
看起来是token字符串,也就是'Bearer <token>'
, 不是 token ,但需要 'Bearer '
首先要删除的子字符串以获得 token 字符串本身。
我想知道,从代码中手动删除它是否是一种常规做法,如下所示:
const token = authHeaderValue.replace('Bearer ', '')
在解码和验证之前?
为什么我需要这个 'Bearer '
我的自定义应用程序中的字符串?
最佳答案
我使用这种技术。
// Header names in Express are auto-converted to lowercase
let token = req.headers['x-access-token'] || req.headers['authorization'];
// Remove Bearer from string
token = token.replace(/^Bearer\s+/, "");
if (token) {
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.json({
success: false,
message: 'Token is not valid'
});
}
req.decoded = decoded;
next();
});
} else {
return res.json({
success: false,
message: 'Token not provided'
});
}
在这里,我们使用正则表达式剥离 JWT 前面的任何 Bearer 字符串。如果包含任何空格,它也会被删除。
关于node.js - 使用 NodeJS 验证 JWT token 字符串,其中包含 'Bearer ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992774/