2014-02-25 48 views
1

我正在使用FOSUserBundle,現在我正在嘗試角色和訪問控制。角色和access_control 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頁面。

你知道爲什麼我的數據庫中的角色發生了很好的變化,但是我無法打開頁面嗎?

回答

2

你有沒有用戶註銷然後重新登錄?在登錄時角色會被拉出並保存爲會話的一部分,因此如果您在用戶登錄到計算機時應用了該角色,那麼用戶在註銷並重新登錄後纔會在該計算機上看到該角色。

相關問題