0

我需要一些帮助来设置 Symfony2 项目下的一些 ROLE 层次结构配置。我有两个区域frontend,用户ROLE_CHAT应该能够登录并且backendROLE_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_hierarchyundersecurity.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_CHATROLE_EXECUTIVEROLE_LOADER1需要ROLE_ADMIN吗?有没有其他方法来设置这个?我不知道这是否可以使用access_control甚至超越并使用 ACL 来解决,这会使一切变得更加复杂,有关此设置的任何建议?想法?你会怎么做?

4

0 回答 0