如何在Symfony 2.3或更高版本中为已登录用户和未登录用户混合内容

时间:2015-12-22 20:53:07

标签: php symfony web

在Symfony 2.3或更高版本中执行此操作的最佳方法是什么:

我有一个可以在公共区域或安全区域张贴的网页。

当用户打开安全网页版本时,让我们说/ SecureArea / page1只能查看内容并做更多事情但是当用户没有登录时,他们可以在/ PublicArea / page1中看到相同的内容但只能看到内容没有做任何其他事情,至少他们登录当然。

在Symfony中保护网页非常简单,您将网页放在一个安全的区域,但我要做的是在两者中都有相同版本的网页,用户可以看到相同的内容但如果他们登录到系统,只能做更多的事情。我不想重复自己并创建同一页面的两个不同版本。

1 个答案:

答案 0 :(得分:3)

对于这种情况,您可以根据树枝中的is_granted('IS_AUTHENTICATED_FULLY')做出决定,基本上检查当前用户是否已登录,例如:

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
    {# do something that only logged in users could see #}
{% else %}
    {# do something that unauthenticated users can see #}
{% endif %}

如果您想检查用户是否已登录控制器:

if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
    // user logged in
} else {
    // not logged in
}