Метод getUser
Метод getUser класса AbstractController
возвращает объект пользователя, который
авторизован в текущей сессии. Метод не
принимает параметров. Если пользователь не
авторизован, метод возвращает null.
Полученный объект реализует интерфейс
UserInterface.
Синтаксис
$user = $this->getUser();
Пример
Давайте получим текущего пользователя и выведем его email:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UserController extends AbstractController
{
#[Route('/user/email', name: 'user_email')]
public function email(): Response
{
$user = $this->getUser();
if ($user === null) {
return new Response('guest');
}
return new Response($user->getEmail());
}
}
?>
Результат выполнения кода для авторизованного пользователя:
"user@example.com"
Пример
Давайте проверим, авторизован ли пользователь, и вернём разные ответы:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UserController extends AbstractController
{
#[Route('/user/status', name: 'user_status')]
public function status(): Response
{
$user = $this->getUser();
if ($user === null) {
return new Response('guest');
}
return new Response('user');
}
}
?>
Результат выполнения кода для неавторизованного пользователя:
"guest"
Пример
Давайте получим имя текущего пользователя через метод getUserIdentifier:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UserController extends AbstractController
{
#[Route('/user/name', name: 'user_name')]
public function name(): Response
{
$user = $this->getUser();
if ($user === null) {
return new Response('guest');
}
return new Response($user->getUserIdentifier());
}
}
?>
Результат выполнения кода для пользователя с именем 'abcde':
"abcde"
Смотрите также
-
класс
AbstractController,
который предоставляет базовые методы контроллера -
метод
isGranted,
который проверяет права доступа пользователя -
метод
denyAccessUnlessGranted,
который запрещает доступ при отсутствии прав -
метод
redirectToRoute,
который выполняет перенаправление на маршрут