【发布时间】:2020-05-24 14:15:18
【问题描述】:
我在邮递员中使用这种类型的授权标头; 在我的中间件中,我有以下代码:
try {
jwtPayload = <any>jwt.verify(<string>req.headers["authorization"], config.jwtSecret);
res.locals.jwtPayload = jwtPayload;
} catch (error) {
//If token is not valid, respond with 401 (unauthorized)
res.status(401).send(error);
return;
}
console.log(req.headers["authorization"]) = Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsInVzZXJuYW1lIjoiaW9uIiwiaWF0IjoxNTgxMTg3Nzg2LCJleHAiOjE1ODExOTEzODZ9.FzZjk-X5AsWP43BFLA3QU1Qd3G9z6NJBT8bdASLzei4
当我尝试使用中间件访问路由时收到此消息:
{
"name": "JsonWebTokenError",
"message": "invalid token"
}
当我只使用令牌(eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsInVzZXJuYW1lIjoiaW9uIiwiaWF0IjoxNTgxMTg3Nzg2LCJleHAiOjE1ODExOTEzODZ9.FzZjk-X5AsWP43BFLA3QU1Qd3G9z6NJBT8bdASLzei4)中间件成功地通过; 我的问题是,我应该从请求中删除 Bearer 还是在没有 Bearer 的情况下发送标头?
【问题讨论】:
-
您可以继续将其作为 Bearer 令牌发送,但在您的身份验证中间件中您需要提取令牌,并在 jwt.verify 中使用它。
jwt.verify(<string>req.headers["authorization"].split(" ")[1], config.jwtSecret) -
我做了这个 jwtPayload =
jwt.verify(token.substring(7), config.jwtSecret);但我认为你的方式更好 -
他们做同样的事情:) 你可以使用其中之一。
-
您可以自己添加一个答案,这样其他人就不会为此花费。