伙计们遇到node_Acl很难。
我已经adedd。
acl.allow('guest',['/docs/'],['show']);
app.use(acl.middleware);
但它显示我用户未经授权。访问时
acl.addUserRoles('api_user', 'business',function(err) {
if(!err) {
log.debug("api_user with business role created");
}
});
acl.addUserRoles('helpdesk', 'helpdesk',function(err) {
if(!err) {
log.debug("helpdesk with helpdesk role created");
}
});
acl.userRoles( 'admin', function(err, roles) {
log.debug(roles);
});
acl.roleUsers( 'business', function(err, users){
log.debug(users);
});
acl.hasRole( 'admin', 'business', function(err, hasRole) {
log.debug("admin user hasRole business =>"+hasRole);
});
acl.allow('admin', ['/api/hellobill/v1/hello'], ['get'], function(err) {
console.log("EROOR"+err);
});
acl.allow([
{
roles: ['guest'],
allows: [
{ resources: '/docs/', permissions: 'get' }
],
}
]);
acl.allow('guest', '/docs/', ['get','put', 'delete']);
app.get('/docs/', acl.middleware(), function (req, res) {
console.log(req);
});
acl.allow('public', ['/', '/docs/', '/api-docs/'], 'view');
acl.whatResources('public',function(err,resources){
console.log(resources);
})
答案 0 :(得分:1)
我不能确定没有看到你的其余代码,但是我猜测有问题的用户没有被授予'guest'角色,否则当你点击那个时没有活跃的用户资源。据我所知,使用该库您必须明确授予您引用的任何角色,角色名称中没有暗示行为的魔力。
所以在某些时候你必须做acl.addUserRoles(theUser, "guest")
才能使它发挥作用。
如果你想要的资源根本不受保护,真正公开,那么我建议只在应该受到保护的路由上安装中间件,例如:
app.use('/private', acl.middleware())
/ *更新* /
好的,用户正在尝试访问资源并收到错误?
我认为它不相关,但您也不需要资源中的斜杠。所以你可以做acl.allow('guest', 'docs', ['get','put', 'delete']);