Symfony 在没有默认控制器/操作的情况下,登录检查路径路由如何工作?
我正在从事symfony 2.3项目,具有以下路由代码Symfony 在没有默认控制器/操作的情况下,登录检查路径路由如何工作?,symfony,yaml,symfony-2.3,symfony-routing,Symfony,Yaml,Symfony 2.3,Symfony Routing,我正在从事symfony 2.3项目,具有以下路由代码 just2_frontend_logincheck: pattern: /login_check 它没有 defaults:{ _controller: testBundle:User:login } 但它正在发挥作用。但我不知道路由是如何工作的。可能吗?请给我提供有关路由的建议。防火墙使用路由/路径来捕获登录请求 此路由的操作从未真正访问过。这是您的登录表单发布到的路由/url,请求应由防火墙的提供商服务处理 如果正在执行
just2_frontend_logincheck:
pattern: /login_check
它没有
defaults:{ _controller: testBundle:User:login }
但它正在发挥作用。但我不知道路由是如何工作的。可能吗?请给我提供有关路由的建议。防火墙使用路由/路径来捕获登录请求
此路由的操作从未真正访问过。这是您的登录表单发布到的路由/url,请求应由防火墙的提供商服务处理
如果正在执行检查路径
路由操作,则防火墙有问题(您的防火墙未处理该请求)
正如您所看到的,FOSUserBundle的check_路径被路由到SecurityController::checkAction
并只抛出一个运行时异常
检查路径的配置可以在app/config/security.yml
的security.firewalls..form\u login.check\u path
下找到
它可以是一种类似于/login\u check
的模式,也可以是一个路由名称,即仅2\u frontend\u login check
,但没有基本操作
security:
providers:
your_provider_name: your_provider_service # authentication provider
# ...
firewalls: # Required
your_firewall_name:
# ...
provider: your_provider_name
form_login:
check_path: /login_check # submit the login form here
# in your case a route name:
# just2_frontend_logincheck
在引擎盖下,symfony调用服务的authenticate()
方法your\u provider\u service
,以检查提供的凭据
您可以使用以下方法找到用作提供程序服务的类:
app/console debug:container --show-private your_provider_service
如果路由未经防火墙处理,从何处开始调试?@hchr-通过如下方式调试路由器,开始测试检查路径
的路由是否存在:app/console debug:router | grep-i
。然后注释掉/禁用安全性下除一个防火墙之外的所有防火墙。防火墙
并缩小该路径将防火墙的配置降至最低。我的回答显示了一个最低限度的示例,足以在/login\u check