角色和access_control fosuserbundle

时间:2014-02-25 16:40:43

标签: php symfony twig bundle fosuserbundle

我正在使用FOSUserBundle,现在我正在尝试角色和访问控制。

我尝试创建一个新角色,更改我的某个用户的角色,然后访问具有受限访问权限的页面。

security.yml:

security:
    encoders:
        FN\UserBundle\Entity\User: sha512

    role_hierarchy:
        ROLE_USER_CONFIRMED:    ROLE_USER
        ROLE_ADMIN:             [ROLE_USER, ROLE_USER_CONFIRMED]
        ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_USER_CONFIRMED, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        main:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main_login:
            pattern: ^/login$
            anonymous: true

        main:
            pattern: ^/
            anonymous: true
            provider: main
            form_login:
                login_path: fos_user_security_login
                check_path: fos_user_security_check
                always_use_default_target_path: false
                default_target_path:            /client/home
                target_path_parameter:          _target_path
                use_referer:                    false
            logout:
                path:       fos_user_security_logout
                target:     /home
            remember_me:
                key:        %secret%

    access_control:
        - { path: ^/client, roles: ROLE_USER_CONFIRMED }
        - { path: ^/admin, roles: ROLE_ADMIN }

我使用$user->setRoles(array('ROLE_USER_CONFIRMED'));

更改了用户的角​​色

在我的数据库中,用户的角色发生了很好的变化,但当我点击FOSUserBundle工具栏中的用户时,我的用户仍然在ROLE_USER中。当我进入页面时:“xxx / client / home”,我有一个ACCESS DENIED页面。

您是否了解为什么我的数据库中的角色发生了很大变化,但我无法打开该页面?

1 个答案:

答案 0 :(得分:2)

您是否有用户注销然后重新登录?在登录时,角色会被拉出并保存为会话的一部分,因此如果您在用户登录计算机时应用了该角色,则用户在注销然后重新登录之前不会看到该计算机上反映的角色。 / p>