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

Метод saveTargetPath

Метод saveTargetPath принадлежит трейту TargetPathTrait и сохраняет целевой URL в сессии. Первым параметром передаётся объект запроса Request, вторым - идентификатор файрвола (например, main), третьим - путь, на который нужно перенаправить пользователя после входа в систему. Обычно этот метод вызывается в слушателе событий или в аутентификаторе, когда пользователь пытается получить доступ к защищённой странице, но ещё не авторизован.

Синтаксис

$res = $this->saveTargetPath(Request $request, string $firewallName, string $targetPath);

Пример

Давайте сохраним целевой путь '/user/profile' в сессии для файрвола 'main':

<?php namespace App\Security; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Http\Util\TargetPathTrait; class TargetPathSaver { use TargetPathTrait; public function save(Request $request): void { $firewallName = 'main'; $targetPath = '/user/profile'; $this->saveTargetPath($request, $firewallName, $targetPath); } } ?>

Пример

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

<?php namespace App\Security; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Http\Util\TargetPathTrait; class TargetPathChecker { use TargetPathTrait; public function check(Request $request): string { $firewallName = 'main'; $this->saveTargetPath($request, $firewallName, '/user/profile'); return $this->getTargetPath($request, $firewallName) ?? 'empty'; } } ?>

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

"/user/profile"

Пример

Давайте сохраним путь через слушатель события RequestEvent, чтобы автоматически запоминать страницу при редиректе на форму входа:

<?php namespace App\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Security\Http\Util\TargetPathTrait; class TargetPathListener implements EventSubscriberInterface { use TargetPathTrait; public function onKernelRequest(RequestEvent $event): void { $request = $event->getRequest(); if (!$request->isMethod('GET')) { return; } $firewallName = 'main'; $targetPath = $request->getPathInfo(); $this->saveTargetPath($request, $firewallName, $targetPath); } public static function getSubscribedEvents(): array { return [ KernelEvents::REQUEST => 'onKernelRequest', ]; } } ?>

Теперь при переходе на '/user/profile' путь сохранится в сессии, и после входа пользователь вернётся именно на эту страницу.

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

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