如何在Symfony 2.3或更高级版本中混合登录用户和非登录用户的内容



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

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

当用户打开安全网页版本时,假设/SecureArea/page1 只能看到内容并做更多事情,但是当用户未登录时,他们可以在/PublicArea/page1 中看到相同的内容,但只能看到内容而不做任何其他事情,至少他们登录了。

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

在这种情况下,您可以根据 twig 中的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
}

最新更新