当symfony2中的防火墙决定重定向到登录时,我尝试拦截。
我的目标是跟踪应该被调用的URL并保留它(会话甚至cookie ),以便在成功登录时发生(所以即使用户注册并遵循先选择双重选择)。所以我需要当前调用的url(不仅仅是路径)和请求(以便写入session / cookie )。
我尝试浏览symfony2代码但无法找到任何内容。它在文档中也没有说清楚。
任何人都有任何想法吗?
答案 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();
}
}
}