FOSUser Bundle - 防止禁用用户登录

时间:2014-01-28 13:37:04

标签: php symfony fosuserbundle

我已经创建了一个loginsuccesshandler.php,并且正在检查用户是否!这样启用了

  public function onAuthenticationSuccess(Request $request, TokenInterface $token)
    {

            $user = $token->getUser();
            if(!$user->isEnabled())
            {//do not pass go

                $request->getSession()->invalidate();
                $this->security->setToken(null);
               //$token->setToken(null);
                return new RedirectResponse($this->router->generate('account_disabled'));
            }

这一行

 $request->getSession()->invalidate();

导致以下错误:

Warning: SessionHandler::write(): Parent session handler is not open in /var/www...

但我无法将其删除,因为如果用户点击“记住我”复选框,他们仍会登录。

我遇到了与FOS注销相同的问题,但我将其添加到配置

    logout:
        invalidate_session: false

1 个答案:

答案 0 :(得分:4)

你做错了。 Symfony已经内置了实现这一目标的机制:

  1. 为您的User课程实施AdvancedUserInterface
  2. ......就是这样。有关更多信息,请参阅http://symfony.com/doc/current/cookbook/security/entity_provider.html#forbid-inactive-users