在Symfony 2.3或更高版本中执行此操作的最佳方法是什么:
我有一个可以在公共区域或安全区域张贴的网页。
当用户打开安全网页版本时,让我们说/ SecureArea / page1只能查看内容并做更多事情但是当用户没有登录时,他们可以在/ PublicArea / page1中看到相同的内容但只能看到内容没有做任何其他事情,至少他们登录当然。
在Symfony中保护网页非常简单,您将网页放在一个安全的区域,但我要做的是在两者中都有相同版本的网页,用户可以看到相同的内容但如果他们登录到系统,只能做更多的事情。我不想重复自己并创建同一页面的两个不同版本。
答案 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
}