Метод setToken
Метод setToken класса TokenStorage записывает
переданный токен в хранилище токенов. Первым параметром
передаётся объект токена, реализующий интерфейс TokenInterface,
либо null для очистки хранилища. Метод используется
при ручной аутентификации пользователя, например после
успешного входа по форме или через API.
Синтаксис
public function setToken(?TokenInterface $token): void
Пример
Давайте сохраним токен аутентификации вручную через TokenStorage:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class AuthController extends AbstractController
{
public function login(TokenStorageInterface $tokenStorage, UserInterface $user): Response
{
$token = new UsernamePasswordToken($user, 'main', $user->getRoles());
$tokenStorage->setToken($token);
return new Response('token saved');
}
}
?>
Результат выполнения кода:
"token saved"
Пример
Давайте проверим, что токен действительно сохранён, прочитав его через getToken:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class AuthController extends AbstractController
{
public function login(TokenStorageInterface $tokenStorage, UserInterface $user): Response
{
$token = new UsernamePasswordToken($user, 'main', $user->getRoles());
$tokenStorage->setToken($token);
$res = $tokenStorage->getToken()->getUser()->getUserIdentifier();
return new Response($res);
}
}
?>
Результат выполнения кода:
"user"
Пример
Давайте очистим хранилище, передав в setToken значение null:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class AuthController extends AbstractController
{
public function logout(TokenStorageInterface $tokenStorage): Response
{
$tokenStorage->setToken(null);
return new Response('token cleared');
}
}
?>
Результат выполнения кода:
"token cleared"
Смотрите также
-
класс
TokenStorage,
который хранит токен текущего запроса -
метод
getToken,
который возвращает текущий токен из хранилища -
метод
login,
который выполняет вход пользователя в приложение -
метод
logout,
который выполняет выход пользователя из приложения