如何更改默认目标路径的行为
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
如何更改默认目标路径的行为
默认情况下,安全组件的信息保留在一个会话变量命名的最后请求URI_security.main.target_path
(与主要
防火墙的名称、定义security.yml
)。成功登录后,用户被重定向到这个路径,来帮助他们继续从最后一个已知的页面访问。
在某些情况下,这是不理想。例如,当最后一个请求URI是一个XMLHttpRequest返回HTML或部分HTML响应,用户被重定向回浏览器不能呈现一个页面。
为了解决这种行为,你就只需要扩展ExceptionListener
类并覆盖默认的方法命名setTargetPath ()
。
首先,覆盖security.exception_listener.class
在你的配置文件参数。可以从你的主要配置文件(应用程序/配置
),或者从一个配置文件被导入包:
1 2 3 4
# src / Acme / HelloBundle /资源/ config / services.yml参数:#……security.exception_listener.class:Acme \ HelloBundle \安全\ \ ExceptionListener防火墙
1 2 3 4 5
< !——src / Acme / HelloBundle /资源/ config /服务。xml - - ><参数>< !——……- - ><参数关键=“security.exception_listener.class”>Acme \ HelloBundle \安全\ \ ExceptionListener防火墙< /参数>< /参数>
1 2 3
/ / src / Acme / HelloBundle /资源/ config / services.php/ /……美元容器- >setParameter (“security.exception_listener.class”,“Acme防火墙\ HelloBundle \安全\ \ ExceptionListener ');
接下来,创建你自己的ExceptionListener
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src / Acme / HelloBundle /安全/防火墙/ ExceptionListener.php名称空间Acme\HelloBundle\安全\防火墙;使用ob娱乐下载\组件\HttpFoundation\请求;使用ob娱乐下载\组件\安全\Http\防火墙\ExceptionListener作为BaseExceptionListener;类ExceptionListener扩展BaseExceptionListener{受保护的函数setTargetPath(请求美元请求){/ /不保存XHR请求的目标路径/ /您可以添加任何你想要的更多的逻辑/ /注意,non-GET请求已经被忽略如果(美元请求- >isXmlHttpRequest ()) {返回;}父::setTargetPath (美元请求);}}
添加尽可能多的或根据需要一些逻辑的场景!
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。