我正在配置Symfony防火墙来处理登录表单。诀窍是检查路由必须使用 PUT 方法,而不是 POST。
这是我的防火墙配置中与我的问题相关的部分:
firewalls:
main:
pattern: ^/
anonymous: true
provider: customer
form_login:
login_path: api_user_login
check_path: api_user_login_connect
如您所见,我不使用路径,而是使用路由。主要是因为我需要指定check_path的方法(在我的情况下为 PUT(
这是我api_user_login_connect
路线:
api_user_login_connect:
path: /users
defaults: { _controller: ApiBundle:Login:connect }
methods: [PUT]
当我尝试访问/users
时,Symfony发出错误,说没有/users
的路由(在GET中我假设(。因此,我知道防火墙不允许我对check_path
路由使用 PUT 方法,或者它不会从配置中读取整个路由,而只是读取路由中定义的路径。
如何告诉Symfony防火墙使用PUT请求检查凭据?
在我发布这个问题之前,我们找到了答案,这里是...
要使防火墙接受对 GET 以外的方法的登录检查,您必须使用此选项:post_only: false
。默认情况下这是真的。
firewalls:
main:
pattern: ^/
anonymous: true
provider: customer
post_only: false