如何更改默认目标路径行为

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何更改默认目标路径行为

默认情况下,安全组件将最后一个请求URI的信息保留在一个名为_security.main.target_path(与主要中定义的防火墙名称security.yml).在成功登录后,用户将被重定向到此路径,以帮助她从她访问的最后一个已知页面继续。

在某些情况下,这是出乎意料的。例如,当最后一个请求URI是针对路由的HTTP POST,该路由被配置为只允许POST方法,用户将被重定向到此路由,只会得到一个404错误。

要避免这种行为,只需扩展ExceptionListener类并重写默认方法setTargetPath ()

首先,重写security.exception_listener.class参数。这可以从你的主配置文件(在' app/config ')或从一个bundle导入的配置文件中完成:

  • YAML
  • XML
  • PHP
1 2 3 4
# src / Acme / HelloBundle /资源/ config / services.yml参数:#……security.exception_listener.class:Acme \ HelloBundle \安全\ \ ExceptionListener防火墙

接下来,创建你自己的ExceptionListener

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ / src / Acme / HelloBundle /安全/防火墙/ ExceptionListener.php名称空间AcmeHelloBundle安全防火墙使用ob娱乐下载组件HttpFoundation请求使用ob娱乐下载组件安全Http防火墙ExceptionListener作为BaseExceptionListenerExceptionListener扩展BaseExceptionListener受保护的函数setTargetPath(请求请求//不为XHR和非get请求保存目标路径//你可以在这里添加任何你想要的逻辑如果请求->isXmlHttpRequest () | |“得到”= = !请求->getMethod ()) {返回;}::setTargetPath (请求);}}

在这里根据您的场景需要添加或多或少的逻辑!

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。