此设置是否需要ROLE_ADMIN?

时间:2016-01-21 05:04:48

标签: php symfony symfony-security

我需要一些帮助在Symfony2项目下设置一些ROLE层次结构配置。我有两个区域frontend,其中ROLE_CHAT的用户应该可以登录,而backend只允许ROLE_ADMIN。我还有两个角色:ROLE_EXECUTIVEROLE_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_CHATROLE_EXECUTIVEROLE_LOADER1还需要ROLE_ADMIN?有没有其他方法来设置这个?我不知道是否可以使用access_control解决这个问题,或者甚至超越并使用ACL,这会使所有更复杂,围绕此设置的任何建议?想法?你会怎么做?

0 个答案:

没有答案