我需要在登录过程之前/在登录过程开始时执行一些操作。是否有任何预登录事件或我如何实现它?
我正在使用Symfony3,我有一个表单登录和OAuth登录(HWIOAuthBundle)。
我尝试this,但它无法使用OAuth登录。或者我如何实现OAuth登录呢?
答案 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)。