首页 > 解决方案 > Symfony 内核创建 302 重定向而不是使用正确的路由

问题描述

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

运行 symfony 控制台,router:match /logout产生 "Defaults": 的值App\Controller\IndexController::logout(),正如预期的那样。

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

相反,内核决定返回一个重定向到“/”的 302,甚至不触及该方法。

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

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

标签: symfonyroutes

解决方案


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


推荐阅读