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

Класс CsrfTokenManager

Класс CsrfTokenManager управляет CSRF-токенами в Symfony. Он создаёт токены для форм, проверяет их подлинность и удаляет устаревшие. Первым параметром конструктор принимает генератор токенов, вторым - хранилище токенов, третьим - менеджер пространств имён. Если параметры не переданы, используются значения по умолчанию.

Синтаксис

use Symfony\Component\Security\Csrf\CsrfTokenManager; $manager = new CsrfTokenManager( $tokenGenerator = null, $tokenStorage = null, $namespace = null );

Пример

Давайте создадим менеджер и получим CSRF-токен для формы с идентификатором 'article_form':

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

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

"a1b2c3d4e5f6"

Пример

Давайте проверим валидность токена, полученного из запроса:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManager; class ArticleController extends AbstractController { public function index(Request $request): Response { $manager = new CsrfTokenManager(); $token = new CsrfToken('article_form', $request->request->get('_token')); if ($manager->isTokenValid($token)) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

"valid"

Пример

Давайте обновим токен и удалим его после использования:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Csrf\CsrfTokenManager; class ArticleController extends AbstractController { public function index(): Response { $manager = new CsrfTokenManager(); $newToken = $manager->refreshToken('article_form'); $value = $newToken->getValue(); $manager->removeToken('article_form'); return new Response($value); } } ?>

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

"f6e5d4c3b2a1"

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

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