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

Метод removeTargetPath

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

Синтаксис

removeTargetPath(Request $request): void

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Util\TargetPathTrait; class AuthController extends AbstractController { use TargetPathTrait; public function login(Request $request): Response { $this->saveTargetPath($request->getSession(), 'main', '/admin'); $res = $this->getTargetPath($request->getSession(), 'main'); echo $res; $this->removeTargetPath($request); $res = $this->getTargetPath($request->getSession(), 'main'); var_dump($res); return new Response('done'); } } ?>

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

/admin NULL

Пример

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

<?php namespace App\Security; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; use Symfony\Component\Security\Http\Util\TargetPathTrait; class AppAuthenticator extends AbstractAuthenticator { use TargetPathTrait; public function supports(Request $request): ?bool { return $request->isMethod('POST'); } public function authenticate(Request $request): Passport { // ... } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response { $targetPath = $this->getTargetPath($request->getSession(), $firewallName); $this->removeTargetPath($request); if ($targetPath) { return new RedirectResponse($targetPath); } return new RedirectResponse('/'); } } ?>

После входа пользователь будет перенаправлен на сохранённый адрес, а сам путь удалён из сессии.

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

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