调试在Symfony 2.1中登录,找到一条不存在的路由

时间:2015-08-22 17:36:04

标签: php symfony authentication login routing

在现有的Symfony 2.1应用程序中,登录被破坏。最初编写应用程序的人不再存在,所以我必须调试登录过程,找出错误发生的位置。当你尝试登录时,基本上你会被重定向到主页,但是没有登录,开始的时间不多,我知道。我检查了mcrypt是否可用,然后我试着一步一步走。发生了一件奇怪的事情。

twig文件中包含以下行:

<form class="loginBox" action="{{ path('foobar_security_login_check', {'_locale': 'de'}) }}" method="post">

呈现为

<form method="post" action="/login/check" class="loginBox" style="display: block;" novalidate="novalidate">

看起来很像这样,对吧?这就是我想知道的,直到我想知道,loginform调用哪个控制器。

php app/console router:debug foobar_security_login_check

  [InvalidArgumentException]                                
  The route "foobar_security_login_check" does not exist.  

router:debug [name]

那怎么可能呢?我怎样才能找到它所连接的控制器?

当我检查routing.yml文件时,有一个foobar_security_login_check条目:

foobar_security_login_check:
  pattern:      /login/check

这解释了为什么路线可以在TWIG中呈现。它仍然没有告诉我发送POST请求的位置。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你不能调试路线。

但是,我可以回答你原来的问题:叫什么控制器。没有控制器被调用。它由安全认证监听器接收,这是一个监听kernel.request事件的事件监听器:https://github.com/symfony/Security/blob/master/Http/Firewall/AbstractAuthenticationListener.php#L179