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

Метод getLoginUrl

Метод getLoginUrl принадлежит абстрактному классу AbstractLoginFormAuthenticator и возвращает адрес страницы с формой входа. Этот адрес используется аутентификатором, когда нужно перенаправить неавторизованного пользователя на форму логина. Метод не принимает параметров и должен вернуть строку с URL. Обычно его реализуют через метод generateUrl контроллера или через генератор маршрутов.

Синтаксис

protected function getLoginUrl(): string

Пример

Давайте создадим аутентификатор формы входа и вернём в методе getLoginUrl адрес маршрута app_login:

<?php namespace AppSecurity; use SymfonyComponentHttpFoundationRedirectResponse; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentRoutingGeneratorUrlGeneratorInterface; use SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface; use SymfonyComponentSecurityHttpAuthenticatorAbstractLoginFormAuthenticator; use SymfonyComponentSecurityHttpAuthenticatorPassport; use SymfonyComponentSecurityHttpAuthenticatorPassportBadgeUserBadge; use SymfonyComponentSecurityHttpAuthenticatorPassportBadgePasswordCredentials; class LoginFormAuthenticator extends AbstractLoginFormAuthenticator { public function __construct( private UrlGeneratorInterface $urlGenerator, ) { } protected function getLoginUrl(): string { return $this->urlGenerator->generate('app_login'); } public function authenticate(Request $request): Passport { $password = $request->request->get('password', ''); return new Passport( new UserBadge($request->request->get('email', '')), new PasswordCredentials($password), ); } public function supports(Request $request): bool { return $request->attributes->get('_route') === 'app_login' && $request->isMethod('POST'); } public function onAuthenticationSuccess( Request $request, TokenInterface $token, string $firewallName, ): ?Response { return new RedirectResponse( $this->urlGenerator->generate('app_home'), ); } } ?>

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

"/login"

Пример

Давайте зададим адрес формы входа напрямую строкой без генератора маршрутов:

<?php namespace AppSecurity; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentSecurityHttpAuthenticatorAbstractLoginFormAuthenticator; use SymfonyComponentSecurityHttpAuthenticatorPassport; use SymfonyComponentSecurityHttpAuthenticatorPassportBadgeUserBadge; use SymfonyComponentSecurityHttpAuthenticatorPassportBadgePasswordCredentials; class LoginFormAuthenticator extends AbstractLoginFormAuthenticator { protected function getLoginUrl(): string { return '/user/login'; } public function authenticate(Request $request): Passport { return new Passport( new UserBadge($request->request->get('email', '')), new PasswordCredentials($request->request->get('password', '')), ); } public function supports(Request $request): bool { return $request->attributes->get('_route') === 'app_login' && $request->isMethod('POST'); } } ?>

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

"/user/login"

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

  • класс AbstractLoginFormAuthenticator,
    который является базой для аутентификатора формы входа
  • метод supports,
    который определяет, должен ли аутентификатор обрабатывать запрос
  • метод authenticate,
    который создаёт паспорт для аутентификации пользователя
  • класс Passport,
    который хранит данные для аутентификации пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить