0

我需要创建两个不同的安全区域。一个区域供用户使用,另一个区域供管理员使用。如果您以用户身份验证并转到 /admin 页面,应用程序必须将您重定向到 /admin/login。这意味着一个人可以在我们的网站上进行两次身份验证——作为用户和管理员。

security.yml:
    firewalls:
        front_end:
            pattern: ^/security       
            provider: users
            form_login:
                check_path: /security/login_check
                login_path: /login
            logout:
              path: /security/logout
              target: /login

        back_end:
            pattern: ^/admin        
            provider: administrators
            form_login:
                check_path: /admin/login_check
                login_path: /admlogin               
            logout:
                path: /admin/logout
                target: /admlogin

路由.yml:

    security_homepage:
      pattern:  /security
      defaults: { _controller: SecureBundle:Default:index }
    login:
      pattern: /login
      defaults: {_controller: SecureBundle:Default:login}
    login_check:
      pattern: /security/login_check
    logout:
      pattern: /security/logout
      defaults: { _controller: SecureBundle:Default:logout }


    admin:
      pattern: /admin
      defaults: { _controller : SecureBundle:Default:admin }  
    admin_login:
      pattern: /admlogin
      defaults: {_controller: SecureBundle:Default:admlogin}
    admin_login_check:
      pattern: /admin/login_check
    admin_logout:
      pattern: /admin/logout

现在我可以进行两次身份验证,但如果我从管理区域注销,系统也会以用户身份注销我。我该如何解决这个问题?对不起我的英语。

4

1 回答 1

0

您可以添加多个角色并限制您的防火墙,以便只有具有例如 ROLE_ADMIN 的用户才能通过。官方 Symfony2 文档提供了很好的示例,恕我直言。关于如何创建多个防火墙设置

于 2013-04-30T13:38:10.870 回答