在express-jwt主页中引入了一个函数,用于从头或查询中获取json web令牌,我们可以将其用作快速中间件,这是函数:
app.use(jwt({
secret: 'hello world !',
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')
[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
}));
我这样使用express.Route()
:
app.use('/user',userRoute);
app.use('/apps',appsRouter);
我的问题是如何使用getToken()
功能或如何在标题授权中访问token
。
提前致谢。
答案 0 :(得分:0)
我想,如果我没有错,你需要你的路线中的令牌或已解码的令牌。我是怎么做到的。
我有一个中间件函数,它将为我解码具有用户信息的令牌,然后它将解码的对象添加到req对象。
e.g route
.put('/update', Middleware.decodeToken, yourCallBackfunction)
decodeToken(req, res, next) {
authorization = req.headers.authorization.replace('Bearer ', ''),
decodeToken = Jwt.verify(authorization);
//verifies the token
req.tokenInfo = decodeToken
next();
}
答案 1 :(得分:0)
最后我找到了解决方案。使用中间件(jwt)可以验证标头中的令牌,如果可以在req.user
中设置,那么在req.user
中我们可以获得所有关于jwt的信息,根据这个:
默认情况下,已解码的令牌附加到req.user但可以 使用requestProperty选项配置。
jwt({ secret: publicKey, requestProperty: 'auth' });