繁体   English   中英

Symfony-登录前事件监听器

[英]Symfony - Pre login event listener

我需要在登录过程之前/登录过程开始时做一些动作。 是否有任何预登录事件或如何实施?

我正在使用Symfony3,并且具有表单登录名和OAuth登录名(HWIOAuthBundle)。

我尝试了此方法 ,但不适用于OAuth登录。 还是也可以为OAuth登录实现它?

通常,symfony中的所有登录内容都由kernel.request事件的侦听器执行,主要是在Symfony安全组件的Firewall侦听器内。 我还没有使用HWIOAuthBundle捆绑包,但似乎它也只使用了Symfony Security组件。

如果只想在登录/身份验证发生之前执行某些操作,则只需要向kernel.request注册一个事件侦听器。请求的优先级比Firewall侦听器高。

您可以按照Symfony文档(“ 事件”和“事件监听器” )中的说明进行操作。 首先在src/AppBundle/EventListener/YourListener.php创建事件侦听器类:

namespace AppBundle\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class YourListener
{
    public function onKernelRequest(GetResponseEvent $event)
    {
        // do stuff
    }
}

然后在您的app/config/services.yml文件中注册服务:

services:
    AppBundle\EventListener\YourListener:
        tags:
            - { name: kernel.event_listener, event: kernel.request, priority: 9 }

根据此页面 ,防火墙的优先级为8。因此,事件侦听器的优先级应高于登录之前要执行的优先级(在上面的示例中,我使用了9)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM