在我的網站上,除了某些特定頁面(登錄,註冊,pwd重置)以外,用戶需要登錄。我已經實現了remember me
功能,它運行良好。Symfony2具有多重角色要求的訪問控制
我想實現的是,對於管理頁面,用戶應該有admin role and not remembered
。爲了檢查這個要求,我在相關的access_control規則中使用了allow_if
,但是它拒絕我的管理員用戶的訪問,儘管會話不被記住,並且我可以確認會話在調試工具欄上有UsernamePasswordToken
。
我ACCESS_CONTROL規則如下:(4日一個不工作)
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, allow_if: "has_role('ROLE_ADMIN') and has_role('IS_AUTHENTICATED_FULLY')" }
- { path: ^/, role: IS_AUTHENTICATED_REMEMBERED }
如果我從相應的訪問控制規則中刪除and has_role('IS_AUTHENTICATED_FULLY')
部分,用戶可以通過授權,所以這個問題似乎是這部分。
has_role('IS_AUTHENTICATED_FULLY')
有什麼問題?
Symfony的版本:2.7.5
是什麼探查說?您的特定用戶是否具有「IS_AUTHENTICATED_FULLY」或「IS_AUTHENTICATED_REMEMBERED」角色?完全是隻有當這個特定的會話期間用戶提供商的用戶名和密碼。 –
正如我在問題上所述,我可以驗證我的會話有'UsernamePasswordToken'。如果它是一個記住的會話,它將是'RememberMeToken'。 – Lashae