我正在使用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