如何更改默认目标路径行为
编辑本页警告:您正在浏览的文档欧宝官网下载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名称空间Acme\HelloBundle\安全\防火墙;使用ob娱乐下载\组件\HttpFoundation\请求;使用ob娱乐下载\组件\安全\Http\防火墙\ExceptionListener作为BaseExceptionListener;类ExceptionListener扩展BaseExceptionListener{受保护的函数setTargetPath(请求$请求){//不为XHR和非get请求保存目标路径//你可以在这里添加任何你想要的逻辑如果($请求->isXmlHttpRequest () | |“得到”= = !$请求->getMethod ()) {返回;}父::setTargetPath ($请求);}}
在这里根据您的场景需要添加或多或少的逻辑!
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。