为了避免在用户尝试访问禁止区域时出现 403 错误并避免用户登录该区域,如果没有正确的凭据,我需要阻止用户登录。
让我解释一下,假设我是X用户ROLE_USER,用户X可以访问前端但不能登录后端,就像我们有用户一样Y,ROLE_ADMIN用户Y可以登录后端但不能登录前端,明白我吗?我怎么能做到这一点?
为了避免在用户尝试访问禁止区域时出现 403 错误并避免用户登录该区域,如果没有正确的凭据,我需要阻止用户登录。
让我解释一下,假设我是X用户ROLE_USER,用户X可以访问前端但不能登录后端,就像我们有用户一样Y,ROLE_ADMIN用户Y可以登录后端但不能登录前端,明白我吗?我怎么能做到这一点?
假设我是角色“ROLE_ADMIN”的用户 Adam。我无法登录到前端。
您应该将此代码简单地添加到您的控制器中:
if( $this->get('security.context')->isGranted('YOUR ROLE') )
return new Response('yea!');
因此,如果您想保护 BackendController 并让使用“ROLE_ADMIN”登录用户,您应该添加以下代码:
if( $this->get('security.context')->isGranted('ROLE_ADMIN') )
return new Response('You are granted to see this site.');
此代码检查当前用户(我)是否具有角色 ROLE_ADMIN。如果您想检查用户是否有“ROLE_ADMIN”并且没有“ROLE_USER”,只需添加:
$security = $this->get('security.context');
if( $security->isGranted('ROLE_ADMIN') && !$security->isGranted('ROLE_USER') )
return new Response('You are not granted to see this site.');
假设您的路线是正确保护的,您必须在树枝模板中隐藏/显示指向受限区域的链接。
来自Symfony2 文档:
{% if is_granted('ROLE_ADMIN') %}
<a href="...">LogIntoBackend</a>
{% endif %}
有关的 :