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

问题描述 投票:1回答:1

我想知道如果验证成功,可以在会话中插入变量(使用FOSUserBundle)。

插入多于或少于两行。

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

有一个非常简单的方法吗?我确实想在成功验证时这样做,而不是在任何地方。

php symfony session events fosuserbundle
1个回答
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的默认安装。

© www.soinside.com 2019 - 2024. All rights reserved.