Symfony 4, как закрыть сессию пользователя?

Здравствуйте!

Не могу программно закрыть сессию пользователю. Это нужно если пароль или "блокировка" были изменены.
Пробовал и так
$this->tokenStorage->setToken(null);
(не происходит ниче)
и так
$request->getSession()->invalidate(1);
(Пишет, что нельзя изменить активную сессию)

и даже так
SecurityController::logout();
(выбрасывает исключение)

Пробовал так же перенести хранилище сессий в базу и удалять их оттуда. Просто появляются новые.
Я понимаю, что похоже, проверяю где-то между "успешно проверено" и записью сессий и он просто записывает новые. Куда же правильно засунуть свои эти проверки так, чтобы я мог делать программный логаут?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@mamontovdmitriy
PHP Developer
Можно так
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;


private function closeCurrentSession(TokenStorageInterface $tokenStorage, Request $request)
{
        $token = new AnonymousToken('default', 'anon.');
        $tokenStorage->setToken($token);
        $request->getSession()->invalidate();
        throw new AccessDeniedException();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 февр. 2020, в 05:15
5000 руб./за проект
26 февр. 2020, в 01:14
600 руб./в час
26 февр. 2020, в 01:13
1500 руб./за проект