29

I am working on symfony 2.3 project having the following routing code

just2_frontend_logincheck:
    pattern:   /login_check

It doesn't have

defaults:{ _controller: testBundle:User:login }

But it is working. But I don't know how the routing is working. Is it possible? Please advice me about the routing.

4

1 回答 1

50

防火墙使用check_path路由/路径来捕获登录请求。

这条路线的行动从未真正被访问过。这是您的登录表单发布到的路由/URL,并且该请求应由您的防火墙的提供商服务处理。

如果check_path正在执行路由的操作,则防火墙有问题(您的防火墙未处理请求)。

正如您在此处看到的, FOSUserBundle 的 check_path 被路由到SecurityController::checkAction并仅抛出一个RuntimeException.

check_path 的配置可以在app/config/security.yml下面 找到security.firewalls.<firewallname>.form_login.check_path

它可以是类似于模式的模式,也可以是/login_check您的情况下的路由名称,即just2_frontend_logincheck,但没有潜在的操作。

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_provider_service来检查提供的凭据。

您可以使用以下方法找到用作提供者服务的类:

app/console debug:container --show-private your_provider_service 
于 2013-07-01T14:13:14.183 回答