Symfony 内核创建 302 重定向而不是使用正确的路由
Posted
技术标签:
【中文标题】Symfony 内核创建 302 重定向而不是使用正确的路由【英文标题】:Symfony kernel creates 302-redirect instead of using correct route 【发布时间】:2021-10-23 19:00:07 【问题描述】:我正在构建一个 Symfony 5.3 应用程序并将路由 /logout
映射到控制器方法 logout()
。
使用router:match /logout
运行symfony 控制台会产生“默认值”的值:App\Controller\IndexController::logout()
,正如预期的那样。
但是,当我在浏览器中访问启用了 xdebug 并在代码中的多个相关点放置断点的页面时,我看到即使路由正确匹配(日志同意),控制器中的注销方法也永远不会跑步。一个简单的$logger->debug("This is never run")
确认这不仅仅是一个 xdebug 问题。
相反,内核决定返回一个重定向到“/”的 302,甚至不触及方法。
我检查了我的浏览器没有缓存旧的重定向,并在控制台中运行了几次cache:clear
。
什么可能导致这种行为?有什么想法吗?
【问题讨论】:
【参考方案1】:Symfony 从未真正调用您的控制器进行注销,它执行自己的逻辑并将用户重定向到某个页面。如果您需要自定义注销行为,请按照文档挂钩LogoutEvent
事件:https://symfony.com/doc/current/security.html#customizing-logout
【讨论】:
这是很有价值的信息!那么这是否意味着“/logout”和/或路由名称“app_logout”已经由 Symfony 定义,因此适用默认逻辑?我已将此方法注册为注销的默认处理程序,如上所述您链接到的段落,使用路径:app_logout 但是是的,我现在可以看到它在示例注销方法中说“//控制器可以为空:它永远不会被执行!”我错过了。谢谢!以上是关于Symfony 内核创建 302 重定向而不是使用正确的路由的主要内容,如果未能解决你的问题,请参考以下文章
JMeter POST 请求返回 200 OK 而不是 302(重定向)
您如何在 ColdFusion 中重定向并控制状态码(即 301 而不是 302)
javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)