angularjs – Angular-permission定义通过API检索的权限
亲爱的堆栈溢出,
我正在尝试使用angular-permission来实现基于权限的身份验证,但我不知道在哪里定义那些通过API从我的后端检索的权限,这需要基于令牌的访问. 首先,让我介绍一下我的应用程序的外观.在我的后端,我的系统门户,我定义了允许调用不同API的权限.权限不会一直在变化.仅当我添加新功能(API)时,才会添加新权限.例如. 在前端,客户登录前端Web门户并自行创建自定义角色,将一些权限组合在一起,例如: 角度权限文档说(https://github.com/Narzerus/angular-permission/blob/development/docs/1-manging-permissions.md#multiple-permissions)我可以使用PermissionStore.defineManyPermissions来定义用户登录后从API检索的权限.这一切都很清楚. 所以我有两个模块.一个是处理用户登录的身份验证模块.另一个是Permission模块,它处理权限验证.在Permission模块.run()阶段,我定义了这样的权限: var getPermissions = function () { var deferred = $q.defer(); system.permissions.get( function () { return deferred.resolve(system.permissions._permissions); },function (error) { console.log("error if can't load permissions"); console.log(error); } ); return deferred.promise; }; var loadPermissions = function () { var promise = getPermissions(); promise.then(function (permissions) { var arrayPermissions = formatPermissionArray(permissions); //var arrayPermissions=['viewSeed','viewAuthentication']; PermissionStore.defineManyPermissions(arrayPermissions,checkPermission); console.log("from permission run service"); console.log(arrayPermissions); },function (reason) { console.log('Failed: ' + reason); },function (update) { console.log('Got notification: ' + update); }); }; loadPermissions(); var formatPermissionArray = function (sourceData) { var formatedPermissionArray = []; for (var i = 0; i < sourceData.length; i++) { formatedPermissionArray.push(sourceData[i].permissionId); }; return formatedPermissionArray; }; 但是在应用程序的引导期间,此模块已经加载,并且arrayPermissions将为空,因为用户尚未登录. 我尝试使用oclazyload从Authentication模块的登录控制器加载Permission模块,这实际上有效,但如果用户刷新/重新加载他们的页面,将不再加载Permission模块. 我是webdevelpment的新手,也是angularjs的新手.短短几个月的经历.我不知道我是否以完全错误的方式做到这一点.我的问题是: >用于查找权限列表的API应该要求身份验证吗?因为我需要将这些身份验证放在UI路由器路由上.无论如何,任何人都可以看到它如果我不应该保护该API,那么我的问题就解决了. 我希望我能清楚地描述我的问题.非常感谢任何帮助或指导. 问候, 解决方法
我正在使用角度卫星的角度许可. PermRoleStore或PermPermissionStore需要处于运行块中.您可以向JSON WEB TOKEN添加数据,像我一样在运行块添加使用它.
$auth.getPayload()此函数从localStorage中的JWT返回有效负载.在该有效负载中,它具有带有角色密钥的数据,我将其保存在后端.我希望这有助于你的问题. .run(function (PermRoleStore,$auth,Yollar) { PermRoleStore .defineRole('ADMIN',function () { if($auth.getPayload()) { if ($auth.getPayload().data.role === 'ADMIN') { return true; } else { return false; } } else { return false; } }); PermRoleStore .defineRole('MODERATOR',function () { if($auth.getPayload()) { if ($auth.getPayload().data.role === 'MODERATOR') { return true; } else { return false; } } else { return false; } }); }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |