访问nodejs中的资源的权限不足

时间:2016-01-21 15:33:08

标签: node.js express

访问资源的权限不足

尝试在我的项目中集成访问控制列表,这里将userid(12345)分配给guest角色。当我访问网址时,我收到以下错误

HttpError:访问资源的权限不足             在/home/smi-user/chrysmo/node_modules/acl/lib/acl.js:649:14             在tryCatcher(/home/smi-user/chrysmo/node_modules/bluebird/js/main/util.js:26:23)             在Promise.successAdapter [as _fulfillmentHandler0](/home/smi-user/chrysmo/node_modules/bluebird/js/main/nodeify.js:23:30)             在Promise._settlePromiseAt(/home/smi-user/chrysmo/node_modules/bluebird/js/main/promise.js:579:21)             在Promise._settlePromises(/home/smi-user/chrysmo/node_modules/bluebird/js/main/promise.js:697:14)             at Async._drainQueue(/home/smi-user/chrysmo/node_modules/bluebird/js/main/async.js:123:16)             at Async._drainQueues(/home/smi-user/chrysmo/node_modules/bluebird/js/main/async.js:133:10)             在Immediate.Async.drainQueues [as _onImmediate](/home/smi-user/chrysmo/node_modules/bluebird/js/main/async.js:15:14)             at processImmediate [as _immediateCallback](timers.js:383:17)

server.js

   var express = require( 'express' );
   var acl = require( 'acl' );
   var bodyParser = require('body-parser');
   var app = express();
   app.use(bodyParser.json());
   app.use(bodyParser.urlencoded({ extended: false }));
   // Or Using the memory backend
    acl = new acl(new acl.memoryBackend());

   acl.allow([
    {
    roles:['guest','member'],
    allows:[
        {resources:'blogs', permissions:'get'},
        {resources:['forums','news'], permissions:['get','put','delete']}
    ]
    },
    {
    roles:['gold','silver'],
    allows:[
        {resources:'cash', permissions:['sell','exchange']},
        {resources:['account','deposit'], permissions:['put','delete']}
    ]
    }
]);

acl.addUserRoles('12345', 'guest');

app.get( '/blogs/:id',acl.middleware(1,getuserid()),
    function( request, response, next ) {
     console.log("test");
    next();
    }
);

function getuserid(){
    return '12345';
}

// Starting the server
app.listen( 3030, function() {
    console.log( 'ACL example listening on port 3030' );
});

0 个答案:

没有答案