我希望通过防火墙保护,所以通过登录/会话来保护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区域时,应用程序会变得混乱,并且将会出现错误,并且会出现错误状态。#34; ERR_TOO_MANY_REDIRECTS"如果我愿意(实际上我不想要的话)在不在该区域后面的登录(例如./ some2login或其他任何不同),则表示登录必须以/ somearea开头。
我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
您通过设置anonymous: false
禁止匿名访问,这就是access_control不会生效的原因。最简单的解决方案可能只是将该设置更改为anonymous: ~
,因为^/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_check
发送与第一个防火墙不匹配的请求,但第二个防火墙请求试图用于安全的卖方区域。