Метод invalidate класса Session
Метод invalidate класса Session полностью аннулирует текущую сессию.
Он удаляет все данные, хранящиеся в сессии, и генерирует новый идентификатор сессии.
Метод не принимает параметров и возвращает true в случае успеха.
Метод удобно использовать при выходе пользователя из системы, когда необходимо гарантированно очистить все данные сессии и предотвратить дальнейшее использование старого идентификатора.
Синтаксис
public function invalidate(int $lifetime = null): bool
Пример
Давайте создадим сессию, запишем в неё данные, а затем аннулируем её:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentRoutingAttributeRoute;
class SessionController extends AbstractController
{
#[Route('/session/invalidate', name: 'session_invalidate')]
public function invalidate(Request $request): Response
{
$session = $request->getSession();
$session->set('user', 'abcde');
$session->set('role', 'admin');
$session->invalidate();
$res = $session->all();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[]
Пример
Давайте проверим, что после аннулирования сессии данные недоступны:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentRoutingAttributeRoute;
class SessionController extends AbstractController
{
#[Route('/session/check', name: 'session_check')]
public function check(Request $request): Response
{
$session = $request->getSession();
$session->set('user', 'abcde');
$before = $session->has('user');
$session->invalidate();
$after = $session->has('user');
return new Response(json_encode([
'before' => $before,
'after' => $after,
]));
}
}
?>
Результат выполнения кода:
{"before":true,"after":false}