Класс TokenStorage
Класс TokenStorage отвечает за хранение токена
аутентификации (объекта, реализующего TokenInterface)
в течение текущего HTTP-запроса. Он позволяет получить
текущий токен, установить новый или проверить наличие
аутентифицированного пользователя. Класс доступен через
сервис-контейнер по идентификатору security.token_storage.
Основные методы: getToken, setToken.
Синтаксис
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
// получение текущего токена
$token = $tokenStorage->getToken();
// установка токена
$tokenStorage->setToken($token);
Пример
Давайте получим текущий токен и выведем имя пользователя:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class AuthController extends AbstractController
{
#[Route('/auth/token', name: 'auth_token')]
public function token(TokenStorageInterface $tokenStorage): Response
{
$token = $tokenStorage->getToken();
if ($token === null) {
return new Response('No token');
}
return new Response($token->getUserIdentifier());
}
}
?>
Результат выполнения кода для аутентифицированного пользователя 'abcde':
abcde
Пример
Давайте установим новый токен вручную:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class AuthController extends AbstractController
{
#[Route('/auth/set-token', name: 'auth_set_token')]
public function setToken(TokenStorageInterface $tokenStorage): Response
{
$token = new UsernamePasswordToken('user', 'main', ['ROLE_USER']);
$tokenStorage->setToken($token);
return new Response('Token set');
}
}
?>
Результат выполнения кода:
"Token set"
Смотрите также
-
класс
Security,
который предоставляет удобный доступ к сервисам аутентификации -
метод
getToken,
который возвращает текущий токен -
метод
setToken,
который устанавливает токен -
класс
AuthorizationChecker,
который проверяет права доступа