2014-09-03 99 views
0

在我的网站上,我有管理员有一堆角色。 我想限制对某些管理员的访问权限,所以我要求在进入之前授予特定角色。管理员需要为其分配“ROLE_REPORT”角色才能访问/ report页面。如何为管理员分配一个额外的角色

这里是我的代码:

security: 
    role_hierarchy: 
     ROLE_REPORT : ROLE_USER 
     ROLE_MERCHANT: ROLE_USER 
     ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT 
     ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT 
     ROLE_ADMIN:  [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT] 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    access_control: 

     # Section Report 
     - { path: /report(.*), roles: ROLE_REPORT} 

出于某种原因,我的管理,当角色被授予,无法访问该页面。我认为它与角色层次结构有关。

让我知道,如果我能为您提供更多的信息。

谢谢

+2

你尝试注销/重新登录?角色不会自动刷新... – 2014-09-03 14:00:42

+0

@jperovic:它的工作原理。我感到跛脚张贴这个。发表您的评论作为答案,以便我可以接受它! – Ebpo 2014-09-03 14:25:51

回答

1

默认情况下,你需要为了新角色才能生效再次注销/登录。

但是,还有另一种选择。根据安全性参考,有一个选项always_authenticate_before_granting,如果设置为true,则会在每个请求上刷新令牌。 Symfony每次都会去数据库刷新角色。

iamdto以实例提供的类似的答案和链接

0

你应该以这种方式添加一个新的角色,例如ROLE_ADMIN_REPORT和修改您的安全:

security: 
    role_hierarchy: 
     ROLE_REPORT : ROLE_USER 
     ROLE_MERCHANT: ROLE_USER 
     ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT 
     ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT 
     ROLE_ADMIN:  [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT] 
     ROLE_ADMIN_REPORT: [ROLE_ADMIN, ROLE_REPORT] 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

access_control: 

    # Section Report 
    - { path: /report(.*), roles: ROLE_REPORT} 
相关问题