Symfony - 预登录事件监听器

时间:2017-09-18 08:45:21

标签: php symfony login oauth

我需要在登录过程之前/在登录过程开始时执行一些操作。是否有任何预登录事件或我如何实现它?

我正在使用Symfony3,我有一个表单登录和OAuth登录(HWIOAuthBundle)。

我尝试this,但它无法使用OAuth登录。或者我如何实现OAuth登录呢?

1 个答案:

答案 0 :(得分:4)

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

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

您可以按照Symfony文档(Events and Event Listeners)中的说明执行此操作。首先在Firewall中创建您的事件监听器类:

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

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