我想知道如果身份验证成功(与FOSUserBundle结合使用),是否可以在会话中插入变量。
要插入的行多于或少于两行。
$session = $request->getSession();
$this->$session->set('type','OneType');
有没有很简单的方法?我真的很想在成功通过身份验证后而不是在任何地方这样做。
答案 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的默认安装中使用。