我需要一些帮助在Symfony2项目下设置一些ROLE层次结构配置。我有两个区域frontend
,其中ROLE_CHAT
的用户应该可以登录,而backend
只允许ROLE_ADMIN
。我还有两个角色:ROLE_EXECUTIVE
和ROLE_LOADER1
,但无法访问后端下的所有区域,如下表所示:
Item ROLE_ADMIN ROLE_CHAT ROLE_EXECUTIVE ROLE_LOADER1
User x
Category x
Command x x x
Alias x x
Report x x x
我遇到了一些问题,因为我不知道如何在role_hierarchy
下正确设置security.yml
以允许上面显示的权限。这就是我现在所拥有的:
安全性: 编码器: FOS \ UserBundle \ Model \ UserInterface:bcrypt
role_hierarchy:
ROLE_CHAT: ROLE_USER
ROLE_LOADER1: [ROLE_USER, ROLE_ADMIN]
ROLE_LOADER2: [ROLE_USER, ROLE_ADMIN]
ROLE_EXECUTIVE: [ROLE_USER, ROLE_ADMIN]
ROLE_ADMIN: [ROLE_USER, ROLE_CHAT, ROL_EXECUTIVE, ROLE_LOADER1, ROLE_LOADER2]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: ~
provider: fos_userbundle
form_login:
csrf_token_generator: security.csrf.token_manager
always_use_default_target_path: true
default_target_path: root
use_referer: false
remember_me: true
logout:
path: fos_user_security_logout
target: root
remember_me:
secret: '%secret%'
lifetime: 604800 # 1 week in seconds
path: /
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/chat/, role: ROLE_CHAT }
- { path: ^/admin/, role: ROLE_ADMIN }
我的疑问是:为了访问后端区ROLE_CHAT
,ROLE_EXECUTIVE
,ROLE_LOADER1
还需要ROLE_ADMIN
?有没有其他方法来设置这个?我不知道是否可以使用access_control
解决这个问题,或者甚至超越并使用ACL,这会使所有更复杂,围绕此设置的任何建议?想法?你会怎么做?