Я создал 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
Ты делаешь это неправильно. Symfony уже имеет встроенный механизм для достижения этого:
AdvancedUserInterface
для своего класса User
.