防止用户从非授权区域登录

时间:2015-02-05 14:14:13

标签: php symfony fosuserbundle symfony-security

当用户试图访问禁区并避免用户登录该区域时,为避免403错误,如果没有正确的凭据,我需要阻止用户记录。

让我解释一下,假设我是X用户ROLE_USER,用户X可以访问前端但是无法登录后端,就像我们有用户YROLE_ADMIN一样,用户Y可以登录到后端而不是在前端,请理解我吗?我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

假设我是角色为'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' AND 没有'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.');

答案 1 :(得分:0)

假设您的路线为correctly secured,则必须在树枝模板中隐藏/显示指向限制区域的链接。

来自Symfony2 doc

{% if is_granted('ROLE_ADMIN') %}
    <a href="...">LogIntoBackend</a>
{% endif %}

相关: