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

FOSUserBundle - Event set variable in session when success authentication?

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

插入多于或少于两行

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

有什么简单的方法吗?真想在认证成功的时候做,不是在任何地方。

您需要收听事件 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 的默认安装。