我正在构建一个Symfony 5.3应用程序,并将路由/logout
映射到控制器方法logout()
。
使用router:match /logout
运行symfony控制台会得到"Defaults":AppControllerIndexController::logout()
"的值,正如预期的那样。
但是,当我在浏览器中访问启用了xdebug的页面,并在代码中的多个相关点上放置了断点时,我看到即使路由匹配正确(日志同意),控制器中的注销方法也从未运行过。一个简单的$logger->debug("This is never run")
确认这不仅仅是一个xdebug问题。
内核决定返回一个302,重定向到"/">
我检查了我的浏览器没有缓存旧的重定向,并在控制台中运行了几次cache:clear
。
什么可能导致这种行为?什么好主意吗?
Symfony实际上从未调用您的控制器进行注销,它执行自己的逻辑并将用户重定向到某些页面。如果您需要自定义注销行为,请按照文档链接到LogoutEvent
事件:https://symfony.com/doc/current/security.html#customizing-logout