Symfony 在没有默认控制器/操作的情况下,登录检查路径路由如何工作?

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,请求应由防火墙的提供商服务处理 如果正在执行

我正在从事symfony 2.3项目,具有以下路由代码

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