我有一个Symfony 2.1应用程序,根据请求的URL,我想在用户的凭据到期时采取不同的操作。我正在使用fos_userbundle,默认情况下会重定向到登录URL。在我的情况下,我想要返回客户端将处理的特殊响应,而不是重定向。
想法#1:
我不确定我到底需要做些什么才能做到这一点。我已经逐步完成了代码,发现Symfony\Component\Security\Http\Firewall\ExceptionListener
正在捕获抛出的异常,最终设置了RedirectResponse
。我想我需要在这里挂钩并设置不同的响应,但我还没有找到它。
想法#2:
我想我可能需要设置另一个防火墙,以不同的方式处理丢失的凭据。这似乎会有更多的工作,而且感觉感觉正确。
我的两个想法都可能偏离基础。这似乎不应该是思考难以弄清楚,但我已经搜索了高低,无法找到答案。
答案 0 :(得分:0)
我不知道他们是否在2.1 vs 2.0中更改了内核侦听器的格式,但也许您可以创建一个处理onKernelRequest方法的侦听器,并检查它们是否经过身份验证。
kernel.listener.pageloadlistener:
class: Acme\DemoBundle\EventListener\PageLoadListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
class PageLoadListener
{
public function onKernelRequest(GetResponseEvent $event)
{
//Do whatever here, you could pass in the security context in the construct of this class to get the user
}
}