Метод getToken
Метод getToken класса TokenStorage возвращает объект токена,
который представляет текущего аутентифицированного пользователя.
Если пользователь не аутентифицирован, метод возвращает null.
Токен содержит информацию о пользователе, его ролях и способе аутентификации.
Метод не принимает параметров.
Синтаксис
public function getToken(): ?TokenInterface
Пример
Давайте получим текущий токен в контроллере и проверим, аутентифицирован ли пользователь:
<?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 index(TokenStorageInterface $tokenStorage): Response
{
$token = $tokenStorage->getToken();
if ($token === null) {
return new Response('anonymous');
}
return new Response('authenticated');
}
}
?>
Результат выполнения кода для неаутентифицированного пользователя:
"anonymous"
Пример
Давайте получим имя пользователя из токена:
<?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 user(TokenStorageInterface $tokenStorage): Response
{
$token = $tokenStorage->getToken();
if ($token === null) {
return new Response('no token');
}
$user = $token->getUser();
return new Response($user->getUserIdentifier());
}
}
?>
Результат выполнения кода для пользователя с идентификатором 'abcde':
"abcde"
Пример
Давайте проверим роли пользователя через токен:
<?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 roles(TokenStorageInterface $tokenStorage): Response
{
$token = $tokenStorage->getToken();
if ($token === null) {
return new Response('no token');
}
$roles = $token->getRoleNames();
return $this->json($roles);
}
}
?>
Результат выполнения кода:
["ROLE_USER", "ROLE_ADMIN"]
Смотрите также
-
класс
TokenStorage,
который хранит токен аутентификации -
метод
setToken,
который устанавливает токен в хранилище -
метод
getUser,
который возвращает текущего пользователя -
метод
isGranted,
который проверяет права доступа