1

我有一个 Symfony 2.1 应用程序,根据请求的 url,我想在用户凭据过期时采取不同的操作。我正在使用 fos_userbundle,默认情况下,它会重定向到登录 url。就我而言,我想返回客户端将处理的特殊响应,而不是重定向。

想法#1:
我不确定我需要做些什么来完成这个。我单步执行了代码,发现在哪里Symfony\Component\Security\Http\Firewall\ExceptionListener捕获了抛出的异常并最终RedirectResponse设置了 a 。我想我需要在这里连接到某个地方并设置不同的响应,但我还没有找到它。

想法#2:
我想我可能需要设置另一个以不同方式处理丢失凭据的防火墙。这似乎需要做更多的工作,而且感觉不太对劲。

我的两个想法都可能离谱。想起来似乎不应该那么难,但我搜索了高低,找不到答案。

4

1 回答 1

0

我不知道他们是否在 2.1 和 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
    }
}
于 2012-08-31T03:59:51.220 回答