Symfony3 onSecurityInteractiveLogin注销并设置flash

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

我将symfony2.2上的项目移植到symfony3.4。我有onSecurityInteractiveLogin事件的LoginListener。当用户登录时,我需要做一些检查。如果检查失败,则用户必须注销并显示一些Flash消息。下面的代码在symfony2中运行正常。在Symfony3中,所有工作都很好,除了flash消息,它没有显示,我认为会话清理。如何以登录表单显示flash消息?

public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
    $user = $event->getAuthenticationToken()->getUser();

    if ($user instanceof UserInterface) {

        // Make some check based on user info in database...

        $check = true || false;

        // Logout user and set flash
        if(!$check){
            $request = $event->getRequest();
            $session = $this->container->get('session');
            $session->start();
            $session->getFlashBag()->add('error','message');
            $request->request->set('_target_path', '/logout');
        }
    }
}
symfony listener fosuserbundle
1个回答
0
投票

我认为使用自定义Authenticator class更好的解决方案。在构造函数中注入Session。您可以在checkCredentials()方法中进行检查,在此处将错误输入FlashBag并返回false,如果用户没有通过您的检查。

或者你可以使用你的自定义user checker

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