如何根据Symfony中的角色为两个控制器设置一个URL?

时间:2015-06-30 14:46:16

标签: security symfony

我正在尝试在Symfony 2.7上创建我的WebSite。 我希望有两个“家”与基本网址:“/”。 一个用于具有ROLE_USER(已连接)角色的用户,另一个用于具有IS_AUTHENTICATED_ANONYMOUSLY的用户。

我正在考虑一个调用两个控制器的URL,而不是调用相同的控制器,根据权限显示第一个或第二个视图(我认为这不是一个好习惯)。

有人知道怎么做吗?

我甚至不知道自己是否参加了良好的练习,所以如果你引导我走另一条路,请自由,谢谢。

最诚挚的问候,

1 个答案:

答案 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') %}