Symfony 内核创建 302 重定向而不是使用正确的路由

Symfony kernel creates 302-redirect instead of using correct route

我正在构建 Symfony 5.3 应用程序并将路由 /logout 映射到控制器方法 logout()

运行 具有 router:match /logout 的 symfony 控制台产生“默认值”的值:App\Controller\IndexController::logout(),正如预期的那样。

但是当我在启用了 xdebug 的浏览器中访问页面并且在我的代码中的多个相关点放置断点时,我看到即使路由正确匹配(日志一致),控制器中的注销方法永远不会 运行。一个简单的 $logger->debug("This is never run") 确认这不仅仅是一个 xdebug 问题。

相反,内核决定 return 重定向到“/”的 302,甚至没有触及该方法。

我已经检查过我的浏览器没有缓存旧的重定向并且在控制台中有几次 运行 cache:clear

什么可能导致这种行为?有什么想法吗?

Symfony 实际上从未调用您的控制器进行注销,它执行自己的逻辑并将用户重定向到某个页面。如果您需要自定义注销行为,请根据文档挂接到 LogoutEvent 事件:https://symfony.com/doc/current/security.html#customizing-logout