Node.js 如何定义节点acl公共可访问资源
伙计们,我和我的前交叉韧带很难相处 我有阿德德Node.js 如何定义节点acl公共可访问资源,node.js,express,node-acl,Node.js,Express,Node Acl,伙计们,我和我的前交叉韧带很难相处 我有阿德德 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.addUse
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);
})
如果看不到代码的其余部分,我就无法确定,但我猜,所讨论的用户没有被授予“来宾”角色,或者当您访问该资源时,没有活动用户。据我所知,有了这个库,您必须显式地授予所引用的任何角色,角色名称中没有暗示行为的魔力 因此,在某个时候,您必须执行
acl.addUserRoles(用户,“guest”)
才能使其工作
如果您想要一个不受保护、真正公开的资源,那么我建议只在应该保护的路由上安装中间件,例如:
app.use('/private',acl.middleware())
/*更新*/
好的,那么是什么用户试图访问资源并得到错误信息
我不认为这有什么关系,但是你也不需要在你的资源中使用斜杠。所以你可以做
acl.allow('guest','docs',['get','put','delete'])代码>感谢您的编辑;我永远无法从我的iphone上正确设置格式。顺便说一句,我在使用swagger中间件吗?