我在我的快速应用中使用node_acl,但由于某种原因,它似乎无法正常工作。 ACL中间件(某种)刚刚被绕过。 这就是我所拥有的:
var mongoose = require('mongoose');
var node_acl = require('acl'),
acl;
mongoose.connect('mongodb://127.0.0.1:27017/acl_', function(err, db){
if(!err){
acl = new node_acl(new node_acl.mongodbBackend(db, 'acl_'));
acl.allow([
{
roles: 'a', //roles
allows: [
{resources: '/fe', permissions: ['put', 'delete']},
] //permissions
},
{
roles: 'b',
allows: [
{resources: '/fe/api/', permissions: 'post'}
]
},
{
roles: 'c',
allows: [
{resources: '/', permissions: ['post', 'put']}
]
},
{
roles: 'd',
allows: [
{resources:'/fe', permissions: ['get', 'post']}
]
}
]);
acl.addUserRoles(420, 'b').then( ()=> console.log('added user'))
.catch(err => console.error(err));
acl.addUserRoles(520, 'a');
} else {
console.log(err);
}
});
在下面使用它:
app.use('/:client/api/', (req, res, next) => {
console.log(acl);
if(acl.isAllowed(420,'/fe/api/','get')){
next();
} else {
res.send('Not allowed');
}
}, function(req,res,done){
console.log('Inside FE subapp.');
done();
},middleware);
但是由于某种原因它不起作用,.isAllowed
被绕过并打印'Inside FE subapp'。我试图在mongo中寻找收藏,但它们似乎是空的。
可能是什么原因? 感谢您的任何帮助,谢谢!
注意:这只是用于测试,我将把acl逻辑放在单独的文件中。