在快递js中使用带有jwt-express的jwt和中间件

时间:2017-11-01 09:28:19

标签: express jwt express-jwt

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

提前致谢。

2 个答案:

答案 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' });