我看到了很多与此主题相关的帖子,但是我的问题有所不同。 !
我的应用具有会话和Jwt,
现在iam尝试删除节点acl并使用JWT实现权限
我已将所有可访问的URL添加到我的令牌jwt_payload
{
"id": "5ddb7cb9c525b923505138df",
"email": "[email protected]",
"permissions": [
"/admin",
"/users",
"/staff",
],
"iat": 1574667849,
"exp": 1574754249,
"aud": "admin",
"iss": "stackoverflow.com",
"sub": "loginToken"
}
用户可以访问/ admin,/ user和/ staff URL,
我的问题是如何检查许可并给出允许或错误?
var opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = 'your_jwt_secret';
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
Admin.findById(jwt_payload.id, function(err, admin) {
if (err) {
return done(err, false);
}
if (admin) {
return done(null, admin);
} else {
return done(null, false);
}
});
}));
您需要检查令牌是否有效(符号正确且未过期),然后才能从验证过程中获取有效负载信息。因此,基本上,您可以制作中间件,该中间件将验证令牌,并通过有效负载使请求继续进行或返回带有相应代码的错误响应。