2016-08-01 53 views
2

我使用Symfony 3,在app/config/security.yml中使用access_control時遇到問題。Symfony3中的access_control不起作用

我安裝了FOSUserBundle,我發現當用戶扮演角色IS_AUTHENTICATED_ANONYMOUSLY時,routes/login/resetting和/ register仍然可用。我用的是基本配置,因爲它是在the documentation解釋,但它不工作:

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 } 

是否有可能的錯誤來自另一個文件?我花了一個星期的時間尋找答案,我無法弄清問題來自哪裏。另外,我試圖在另一個項目上重新安裝Symfony,以嘗試新的配置併發生相同的錯誤。

謝謝你的幫助!

Screenshot

+0

已經登錄默認情況下,路由'/ login','/ resetting'和'/register'即使在登錄時也可用。 你說什麼錯誤接收? – NDM

+0

我沒有收到任何錯誤,並且我可以成功登錄,但是我仍然可以訪問這些路由,並且用戶名稱顯示在帶有註銷鏈接的表單上方。換句話說,我可以再次登錄... – Jacky

+0

究竟是什麼問題?這聽起來不像是有什麼問題,因爲你說你可以訪問這些路線時,設置爲匿名,這是正確的... –

回答

1

不會有任何問題,這是很正常的,你對這些路線訪問被驗證過了:

IS_AUTHENTICATED_ANONYMOUSLY:所有用戶(甚至是匿名的)有 這一點 - 這在將網址列入白名單以保證訪問時很有用

這是最低級別的角色。

但是你可以在你的fonction如果你想被重定向到/admin當你想訪問/login被記錄

if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
    return $this->redirect($this->generateUrl('your_route_path_to_admin')); 
}