РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
621 of 1361 menu

Метод refreshToken класса CsrfTokenManager

Метод refreshToken класса CsrfTokenManager удаляет существующий токен и создаёт новый с тем же идентификатором. Первым параметром передаётся имя токена (строка или объект TokenInterface). Метод возвращает новый объект токена CsrfToken.

Метод полезен, когда нужно сменить значение токена без изменения его идентификатора, например, после успешной отправки формы, чтобы защититься от повторной отправки.

Синтаксис

public function refreshToken(string|TokenInterface $tokenId): CsrfToken

Пример

Давайте сгенерируем токен, а затем обновим его:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; class ArticleController extends AbstractController { public function index(CsrfTokenManagerInterface $csrfManager): Response { $token = $csrfManager->getToken('article_form'); $value1 = $token->getValue(); $newToken = $csrfManager->refreshToken('article_form'); $value2 = $newToken->getValue(); return new Response($value1 . ' | ' . $value2); } } ?>

Результат выполнения кода:

"abcde | fghij"

Пример

Давайте убедимся, что после обновления старый токен становится невалидным:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; class ArticleController extends AbstractController { public function index(CsrfTokenManagerInterface $csrfManager): Response { $oldToken = $csrfManager->getToken('article_form'); $oldValue = $oldToken->getValue(); $csrfManager->refreshToken('article_form'); $isValid = $csrfManager->isTokenValid( new CsrfToken('article_form', $oldValue) ); return new Response($isValid ? 'valid' : 'invalid'); } } ?>

Результат выполнения кода:

"invalid"

Смотрите также

  • класс CsrfTokenManager,
    который управляет CSRF-токенами
  • метод getToken,
    который возвращает CSRF-токен по идентификатору
  • метод isTokenValid,
    который проверяет валидность CSRF-токена
  • метод removeToken,
    который удаляет CSRF-токен
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить