使用mongo后端的node_acl无法正常工作

时间:2018-07-19 07:08:33

标签: mongodb express acl

我在我的快速应用中使用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逻辑放在单独的文件中。

0 个答案:

没有答案