当symfony2中的防火墙决定重定向到登录时,我会尝试拦截。
我的目标是跟踪应该调用的url,并将其保留(会话,甚至cookie),以备成功登录时使用(<em]因此,即使用户注册并遵循双选择加入>操作)。因此,我需要当前调用的url(而不仅仅是路径)和请求(。
我尝试浏览symfony2代码,但找不到任何内容。文件中也没有提到这一点。
有人有什么想法吗?
我找到了一个在kernel.exception
上侦听的解决方案。当抛出异常时,我会检查它是否是AccessDeniedException
的实例,并对其做出反应
这是我的服务定义:
whatever_bundle.event_listener.exception_listener:
class: WhateverBundleEventListenerExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, priority: 1 }
这就是监听器类:
<?php
namespace WhateverBundleEventListener;
use SymfonyComponentHttpKernelEventGetResponseForExceptionEvent;
use SymfonyComponentSecurityCoreExceptionAccessDeniedException;
class ExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
if ($event->getException() instanceof AccessDeniedException) {
doTheThingsYouWantToDoInThisCase();
}
}
}