我需要一些帮助来设置 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
undersecurity.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 来解决,这会使一切变得更加复杂,有关此设置的任何建议?想法?你会怎么做?