Класс TargetPathTrait
Класс TargetPathTrait предоставляет набор методов
для работы с целевым путём (target path) в сессии.
Целевой путь - это URL, на который пользователь
будет перенаправлен после успешной аутентификации.
Класс содержит три метода: saveTargetPath
для сохранения пути, getTargetPath для его
получения и removeTargetPath для удаления.
Первым параметром во все методы передаётся объект
Request, а вторым - строковый ключ firewall.
Синтаксис
<?php
trait TargetPathTrait
{
public function saveTargetPath(Request $request, string $firewallName, string $uri): void
public function getTargetPath(Request $request, string $firewallName): ?string
public function removeTargetPath(Request $request, string $firewallName): void
}
?>
Пример
Давайте сохраним целевой путь '/admin'
для firewall с именем 'main':
<?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 SecurityController extends AbstractController
{
use TargetPathTrait;
public function login(Request $request): Response
{
$this->saveTargetPath($request, 'main', '/admin');
return new Response('target path saved');
}
}
?>
Результат выполнения кода:
"target path saved"
Пример
Давайте получим ранее сохранённый целевой путь:
<?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 SecurityController extends AbstractController
{
use TargetPathTrait;
public function login(Request $request): Response
{
$this->saveTargetPath($request, 'main', '/admin');
$res = $this->getTargetPath($request, 'main');
return new Response($res);
}
}
?>
Результат выполнения кода:
"/admin"
Пример
Давайте удалим сохранённый целевой путь:
<?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 SecurityController extends AbstractController
{
use TargetPathTrait;
public function login(Request $request): Response
{
$this->saveTargetPath($request, 'main', '/admin');
$this->removeTargetPath($request, 'main');
$res = $this->getTargetPath($request, 'main');
return new Response($res ?? 'null');
}
}
?>
Результат выполнения кода:
"null"
Смотрите также
-
метод
saveTargetPath,
который сохраняет целевой путь в сессии -
метод
getTargetPath,
который возвращает сохранённый целевой путь -
метод
removeTargetPath,
который удаляет целевой путь из сессии -
класс
Passport,
который представляет собой паспорт аутентификации