【发布时间】:2019-11-20 22:56:10
【问题描述】:
我正在将 Symfony 从 3.4 升级到 4.3,我遇到的情况是每条路由都与控制器和方法正确匹配,但随后请求到达 RedirectableCompiledUrlMatcher 并将正确的参数替换为
_controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
这会触发各种其他事情,例如调用参数转换器、攻击防火墙和其他与路由相关的事情,因为匹配的路由不正确,所以不应该这样做。
在不替换正确参数的情况下继续调试 3.4 项目。
我的问题是现在这是否是正确的请求流(即每条路由都必须通过 urlRedirectAction),我需要配置其他东西,或者有什么方法可以避免调用,我猜,RedirectableCompiledUrlMatcher?
是否有可能发生这种情况,因为RedirectableUrlMatcher 是\Symfony\Component\Routing\Router 的默认匹配器,为什么它是默认匹配器?有没有机会像 3.4 一样用普通的 UrlMatcher 替换它?
正是vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:63 这一行,我将$ret 与我的控制器正确匹配,并且正在调用$this->redirect(),它将我的控制器替换为Symfony RedirectController。
特征是RedirectableCompiledUrlMatcher 类的一部分
【问题讨论】:
-
请提供已定义路由的示例,以及您正在使用的 URL 以及它们是否实际上以任何方式被重定向。
标签: symfony symfony-routing symfony-4.3