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