在 express js 中使用 jwt with jwt-express 和中间件

using jwt with jwt-express with middleware in express js

express-jwt 主页中介绍了一个从 header 或查询中获取 json 网络令牌的功能,我们可以将其用作快递中间件,这就是功能:

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() 函数或如何在 header.

的授权下访问 token

提前致谢。

我想,如果我没记错的话,你的路线中需要令牌或解码后的令牌。这是我的做法。

我有一个中间件功能,可以为我解码其中包含用户信息的令牌,然后将解码后的对象添加到请求对象中。

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();
    }

我终于找到了解决办法。使用中间件 (jwt) 可以验证 header 中的令牌,如果它可以在 req.user 中设置,那么,在 req.user 中,我们拥有 deceded jwt 的所有信息,根据此:

By default, the decoded token is attached to req.user but can be configured with the requestProperty option. jwt({ secret: publicKey, requestProperty: 'auth' });