Symfony 3防火墙保护区混乱

Symfony 3防火墙保护区混乱,symfony,login,firewall,Symfony,Login,Firewall,我想通过防火墙和登录/会话保护Symfony 3中的应用程序区域: security: firewalls: seller: pattern: ^/somearea form_login: login_path: /somearea/login check_path: /somearea/login logout:

我想通过防火墙和登录/会话保护Symfony 3中的应用程序区域:

security:   
    firewalls:
        seller:
            pattern: ^/somearea
            form_login:
                login_path: /somearea/login
                check_path: /somearea/login
            logout:
                path: /somearea/logout
                target: /
            anonymous: false

access_control:
    - { path: ^/somearea/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/somearea, role: IS_AUTHENTICATED_FULLY }
但是,当我想进入/somearea区域时,应用程序会变得混乱,并且会出现“ERR_TOO_MANY_REDIRECTS”的情况,如果我(实际上我不想要的)让登录名不在该区域的后面(例如/some2login或其他任何不同的地方),则会说登录名必须以/somearea开头


我怎样才能解决这个问题?谢谢大家!

通过设置
anonymous:false
,您将不允许匿名访问,这就是访问控制不会生效的原因。最简单的解决方案可能是将该设置更改为
匿名:~
,因为对
^/somearea
的回退访问控制将确保不允许匿名用户

另一个解决方案是为登录设置单独的防火墙:

security:
    firewalls:
        login:
            pattern: ^/somearea/login$
            security: false
        seller:
            pattern: ^/somearea
            form_login:
                login_path: /somearea/login
                check_path: /somearea/login_check
            ...

登录表单将落入第一个防火墙,该防火墙不安全且始终可访问,但在提交表单时,您将向与第一个防火墙不匹配的
/somearea/login\u check
发送请求,但是第二个选项,因此尝试对安全卖方区域进行身份验证。

您通过设置
匿名:false
来禁止匿名访问,这就是访问控制不会生效的原因。最简单的解决方案可能是将该设置更改为
匿名:~
,因为对
^/somearea
的回退访问控制将确保不允许匿名用户

另一个解决方案是为登录设置单独的防火墙:

security:
    firewalls:
        login:
            pattern: ^/somearea/login$
            security: false
        seller:
            pattern: ^/somearea
            form_login:
                login_path: /somearea/login
                check_path: /somearea/login_check
            ...
登录表单将落入第一个防火墙,该防火墙不安全且始终可访问,但在提交表单时,您将向
/somearea/login\u check
发送一个请求,该请求与第一个防火墙不匹配,但与第二个防火墙不匹配,因此尝试对安全的卖方区域进行身份验证