0
我的项目有很多角色:admin,HR,manager,employee。我如何在Symfony2中以通用的方式实现它,以便将来可以添加新的角色?与symfony角色相关的问题
我的项目有很多角色:admin,HR,manager,employee。我如何在Symfony2中以通用的方式实现它,以便将来可以添加新的角色?与symfony角色相关的问题
Symfony2代表使用UserInterface
接口的已认证用户。
该界面要求您实施getRoles
方法,该方法返回用户拥有的所有角色。
根据您实现此UserInterface的方式,您可以从数据库,Web服务或任何您想要的内容中获取这些角色。提供这些用户
一个简单的办法是in-memory
提供商:
# app/config/security.yml
security:
# ...
providers:
in_memory:
users:
ryan: { password: bb87a29949f3a1ee0559f8a57357487151281386, roles: 'ROLE_USER' }
admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN', 'ROLE_RH'] }
另一种方法是使用EntityProvider。欲了解更多详情,请看这cookbook entry。
在这最后一个例子中,用户角色静态存储在一个harcoded数组中,但它们可能来自另一个表,使用表关联。这就是它在FOSUserBundle中的做法。
你甚至可以定义角色层次:
# app/config/security.yml
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
使得已经作用ROLE_ADMIN任何用户也继承了角色ROLE_USER。
欲了解更多信息,请看the docs。