Метод getUser класса Security
Метод getUser класса Security возвращает объект текущего пользователя, прошедшего аутентификацию. Если пользователь не аутентифицирован, метод возвращает null. Класс Security доступен через сервис-контейнер или может быть внедрён в метод контроллера через аргументы.
Синтаксис
public function getUser(): ?UserInterface
Пример
Давайте получим текущего пользователя в контроллере:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Bundle\SecurityBundle\Security;
class UserController extends AbstractController
{
#[Route('/user', name: 'user_index')]
public function index(Security $security): Response
{
$user = $security->getUser();
if ($user === null) {
return new Response('User not authenticated');
}
return new Response($user->getUserIdentifier());
}
}
?>
Результат выполнения кода для аутентифицированного пользователя:
"abcde"
Пример
Давайте получим роли текущего пользователя:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Bundle\SecurityBundle\Security;
class UserController extends AbstractController
{
#[Route('/roles', name: 'user_roles')]
public function roles(Security $security): Response
{
$user = $security->getUser();
if ($user === null) {
return new Response('User not authenticated');
}
return new Response(implode(', ', $user->getRoles()));
}
}
?>
Результат выполнения кода:
"ROLE_USER, ROLE_ADMIN"
Смотрите также
-
класс
Security,
который предоставляет доступ к системе безопасности -
метод
isGranted,
который проверяет права доступа пользователя -
интерфейс
UserInterface,
который реализует объект пользователя -
метод
getUserIdentifier,
который возвращает идентификатор пользователя