防火墙重定向事件

时间:2015-11-05 10:01:17

标签: symfony fosuserbundle

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

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

我尝试浏览symfony2代码但无法找到任何内容。它在文档中也没有说清楚。

任何人都有任何想法吗?

1 个答案:

答案 0 :(得分:0)

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

这是我的服务定义:

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

这是听众类:

<?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();
        }
    }
}