我正在尝试在Symfony 2.7上创建我的WebSite。 我希望有两个“家”与基本网址:“/”。 一个用于具有ROLE_USER(已连接)角色的用户,另一个用于具有IS_AUTHENTICATED_ANONYMOUSLY的用户。
我正在考虑一个调用两个控制器的URL,而不是调用相同的控制器,根据权限显示第一个或第二个视图(我认为这不是一个好习惯)。
有人知道怎么做吗?
我甚至不知道自己是否参加了良好的练习,所以如果你引导我走另一条路,请自由,谢谢。
最诚挚的问候,
答案 0 :(得分:2)
这是错误的方法,因为Symfony将首先尝试将您的路由与已配置的firewall
匹配,然后在执行身份验证后将检查正确的ROLE_USER
授权。
因为您想允许IS_AUTHENTICATED_ANONYMOUSLY
,所以应该检查控制器或模板中的ROLE_USER
。这不是您可以根据相同的URL检查的内容。
在您的控制器中:
if ($this->get('security.authorization_checker')->isGranted('ROLE_USER')) {
// ...
}
在你的Twig模板中:
{% if is_granted('ROLE_USER') %}