FOSUserBundle-成功验证身份时会话中的事件设置变量?

时间:2019-04-17 14:13:16

标签: php symfony session events fosuserbundle

我想知道如果身份验证成功(与FOSUserBundle结合使用),是否可以在会话中插入变量。

要插入的行多于或少于两行。

$session = $request->getSession();
$this->$session->set('type','OneType');

有没有很简单的方法?我真的很想在成功通过身份验证后而不是在任何地方这样做。

1 个答案:

答案 0 :(得分:1)

您需要收听事件security.interactive_login。 (Docs

使用an event subscriber的简单示例:

<?php
// src/EventSubscriber/SecuritySubscriber.php
namespace App\EventSubscriber;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\SecurityEvents;

class SecuritySubscriber implements EventSubscriberInterface  
{

    public static function getSubscribedEvents()
    {
        return [
         SecurityEvents::INTERACTIVE_LOGIN => 'successfulLogin',
        ];
    }

    public function successfulLogin( InteractiveLoginEvent $event )
    {
        $event->getRequest()->getSession()->set('foo', 'bar');
    }
}

您尚未指定版本,但这应该可以在Symfony 4的默认安装中使用。