我正在使用Symfony框架與FOS用戶包。我使用安全上下文來確定顯示哪些菜單項和其他項。Symfony2 - 我可以給匿名用戶一個'ROLE_SOMETHING'
$securityContext = $this->get('security.context');
if ($securityContext->isGranted($report['Permission'])){
//add the menu item...
}
有什麼辦法給匿名用戶一個'ROLE_USER'的安全上下文嗎?我已登錄用戶正常工作。
我嘗試添加一行:
role_hierarchy:
IS_AUTHENTICATED_ANONYMOUSLY: ROLE_USER
我security.yml希望這將做到這一點,但顯然不是。我搜索了一下並閱讀了文檔。
我想象:
if ($securityContext->isGranted($report['Permission'])
|| ($report['Permission'] === 'ROLE_USER' && $securityContext->is_anonymous()))
會的工作,但這種感覺就像樣的黑客(而不是非常DRY)
編輯: 這是一個內部網站。我有一張包含報告名稱的表格。不管是否登錄,都應該能夠看到一些報告。一些報告需要查看權限。我不想創建幾百個用戶,只有少數用戶需要訪問。
你想做什麼?默認情況下,給予用戶角色意味着他需要登錄。 – 2014-09-10 15:29:47
您不能這樣做,因爲僞角色IS_AUTHENTICATED_ANONYMOUSLY僅用於symfony中內置的系統身份驗證,以區分未經身份驗證的用戶在某些路由中輸入的內容防火牆。 – 2014-09-10 15:50:55
另一種方法是使用選民:http://symfony.com/doc/current/cookbook/security/voters_data_permission.html。你最終得到:$ securityContext-> isGranted('view',$ report);所有的邏輯結束在你的選民類。 – Cerad 2014-09-10 15:54:14