Метод addBadge класса Passport
Метод addBadge класса Passport добавляет бейдж к паспорту аутентификации. Бейджи позволяют передавать дополнительную информацию в процессе аутентификации, такую как CSRF-токен, данные для запоминания пользователя или новый пароль. Метод принимает один параметр - объект бейджа, реализующий интерфейс BadgeInterface, и возвращает текущий объект Passport для цепочки вызовов.
Синтаксис
public function addBadge(BadgeInterface $badge): static
Пример
Давайте создадим паспорт и добавим к нему бейдж CSRF-токена:
<?php
namespace AppSecurity;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentSecurityHttpAuthenticatorPassportBadgeCsrfTokenBadge;
use SymfonyComponentSecurityHttpAuthenticatorPassportPassport;
use SymfonyComponentSecurityHttpAuthenticatorPassportUserBadge;
class ApiAuthenticator
{
public function authenticate(Request $request): Passport
{
$csrfToken = $request->getPayload()->get('_csrf_token');
$passport = new Passport(
new UserBadge('user'),
new CsrfTokenBadge('authenticate', $csrfToken)
);
return $passport;
}
}
?>
Результат выполнения кода:
Passport { badges: [CsrfTokenBadge] }
Пример
Давайте добавим бейдж запоминания пользователя через метод addBadge:
<?php
namespace AppSecurity;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentSecurityHttpAuthenticatorPassportBadgeRememberMeBadge;
use SymfonyComponentSecurityHttpAuthenticatorPassportPassport;
use SymfonyComponentSecurityHttpAuthenticatorPassportUserBadge;
class FormAuthenticator
{
public function authenticate(Request $request): Passport
{
$passport = new Passport(
new UserBadge('user')
);
$passport->addBadge(new RememberMeBadge());
return $passport;
}
}
?>
Результат выполнения кода:
Passport { badges: [RememberMeBadge] }
Смотрите также
-
класс
Passport,
который представляет паспорт аутентификации -
метод
getBadge,
который возвращает бейдж по имени класса -
метод
hasBadge,
который проверяет наличие бейджа -
бейдж
CsrfTokenBadge,
который добавляет CSRF-токен в паспорт