2012-02-17 68 views

回答

2

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