2017-05-04 60 views
0

我使用的Symfony 3.2和FOS用戶捆綁2.0 我用的是經典的設置:「入門FOSUserBundle」安全的symfony 3

security: 
always_authenticate_before_granting: true 
encoders: 
    FOS\UserBundle\Model\UserInterface: bcrypt 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_CLIENT 

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4 
     logout: true 
     anonymous: ~ 

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin, role: ROLE_ADMIN } 
    - { path: ^/client, role: ROLE_CLIENT } 

它工作,但事情是奇怪: 當我退出和導航公共頁面,因爲我總是記錄 我需要手動重新加載頁面在我的瀏覽器,使註銷有效。 (我在我的模板中使用{%if is_granted('ROLE_ADMIN')%} 這是我的安全配置問題還是緩存問題? 一些幫助將蜜蜂讚賞 感謝 文森特

回答

0

嘗試添加ROLE_USER您的角色的層次結構是這樣的:

role_hierarchy: 
    ROLE_CLIENT: ROLE_USER 
    ROLE_ADMIN:  ROLE_CLIENT 

如文檔指出:「確保每個用戶都擁有至少一個角色,或你的用戶看起來就像沒有通過身份驗證一樣,一個通用的約定是給每個用戶ROLE_USER。「 http://symfony.com/doc/current/security.html#roles

+0

謝謝你,但它改變什麼 –

+0

看一看這也http://stackoverflow.com/questions/27783019/logout-does-not-destroy-clear-session-properly-in-fosuserbundle –