防火墙重定向事件
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();
}
}
}
当 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();
}
}
}