2

使用时我无法理解一个概念ZfcRbac

1.我使用自己的User实体来实现ZfcRbac\Identity\IdentityInterface

2.这个接口有addRolegetRoles方法,getRoles()应该返回数组Rbac\Role\RoleInterface所以我有一个数组Rbac\Role\RoleInterface

3.我从我的自定义模型中获取角色,并通过在验证用户时将角色添加到User实体addRole()

4. Rbac\Role\RoleInterface具有hasPermission()返回角色权限的方法

摘要:身份验证后,我拥有User每个角色的经过身份验证的身份信息、角色和权限。为什么我需要另一个RoleProvider并列出我在其中的所有角色?我错过了什么?

4

2 回答 2

1

正如您在 php 文档中IdentityInterface看到的,该getRoles()方法可以返回两件事:

1.字符串数组

2.数组Rbac\Role\RoleInterface

如果你返回一个字符串数组,你需要一个额外RoleProvider的把字符串“翻译”成实际的Rbac\Role\RoleInterface. 如果你返回一个数组,Rbac\Role\RoleInterface在我看来你不再需要一个RoleProvider.

于 2015-03-10T10:05:45.077 回答
1

在我看来,角色提供者不是用于生成用户角色列表,而是用于加载和构建可访问的应用程序角色列表,这些角色具有在授权服务期间和授权服务中使用的权限。

所以我正在扩展 ,所以Zend\Authentication\AuthenticationService我可以实现getRoles().ZfcRbac\Identity\IdentityInterface

我仍然需要为访问用户角色和存储要授权的用户角色编写代码。AuthenticationService使用or加载用户角色的例子并不多IdentityInterface,而且角色提供者的加载似乎有据可查。我正在尝试将身份验证与授权分离。我进行身份验证,然后在我的授权模块中加载用户的角色,因为我可能会遇到这样的情况:身份验证是必需的,而访客角色的加载是开销。

于 2015-10-21T18:42:44.577 回答