防火墙重定向事件

Firewall Redirect Event

当 symfony2 中的防火墙决定重定向到登录时,我尝试拦截。

我的目标是跟踪应该被调用的 url 并保留它(session 甚至 cookie),以便在成功登录时使用(所以即使用户先注册并遵循双重选择加入)。所以我需要当前调用的url(不仅仅是路径)和请求(为了写入session/cookie ).

我尝试浏览 symfony2 代码,但找不到任何东西。它也没有在文档中说明任何内容。

大家有什么想法吗?

我找到了一个在 kernel.exception 上收听的解决方案。 当抛出异常时,我检查它是否是 AccessDeniedException 的实例并对其做出反应。

这是我的服务定义:

whatever_bundle.event_listener.exception_listener:
    class: WhateverBundle\EventListener\ExceptionListener
    tags:
        - { name: kernel.event_listener, event: kernel.exception, priority: 1 }

这是监听器 Class:

<?php
namespace WhateverBundle\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

class ExceptionListener
{
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        if ($event->getException() instanceof AccessDeniedException) {
            doTheThingsYouWantToDoInThisCase();
        }
    }
}