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

Класс CsrfTokenBadge

Класс CsrfTokenBadge представляет собой бейдж паспорта аутентификации, который добавляет CSRF-токен в процесс проверки подлинности. Он используется совместно с классом Passport или SelfValidatingPassport для защиты форм входа от CSRF-атак. Первым параметром передаётся идентификатор CSRF-токена, вторым - значение токена.

Бейдж наследуется от класса BadgeInterface и реализует метод getCsrfToken, возвращающий значение токена. Проверка токена выполняется автоматически при аутентификации через CsrfTokenManager.

Синтаксис

new CsrfTokenBadge(string $tokenId, string $csrfToken)

Пример

Давайте создадим паспорт с CSRF-бейджем в аутентификаторе:

<?php namespace App\Security; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; class LoginAuthenticator extends AbstractAuthenticator { public function authenticate(Request $request): Passport { $csrfToken = $request->request->get('_csrf_token', ''); return new Passport( new UserBadge($request->request->get('_username', '')), new PasswordCredentials($request->request->get('_password', '')), [ new CsrfTokenBadge('authenticate', $csrfToken), ] ); } public function supports(Request $request): ?bool { return $request->isMethod('POST') && $request->attributes->get('_route') === 'app_login'; } public function onAuthenticationSuccess(Request $request, $token, string $firewallName): ?Response { return null; } public function onAuthenticationFailure(Request $request, $exception): ?Response { return null; } } ?>

В данном примере создаётся бейдж с идентификатором 'authenticate' и значением токена из запроса. Если токен не совпадёт с ожидаемым, аутентификация завершится ошибкой.

Пример

Давайте получим значение CSRF-токена из бейджа:

<?php namespace App\Security; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge; $badge = new CsrfTokenBadge('authenticate', 'abcde'); $res = $badge->getCsrfToken(); echo $res; ?>

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

"abcde"

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

  • класс Passport,
    который содержит бейджи аутентификации
  • класс SelfValidatingPassport,
    который поддерживает CSRF-бейдж
  • метод addBadge,
    который добавляет бейдж в паспорт
  • класс UserBadge,
    который идентифицирует пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить