РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
580 of 1361 menu

Атрибут CurrentUser

Атрибут CurrentUser вешается на параметр метода контроллера и автоматически подставляет в него объект пользователя, который currently авторизован в системе. Если пользователь не авторизован, Symfony вернёт ошибку доступа. Атрибут работает совместно с UserInterface и позволяет получить доступ к данным пользователя без ручного обращения к TokenStorage.

Синтаксис

#[CurrentUser] UserInterface $user

Пример

Давайте внедрим текущего пользователя в метод контроллера и выведем его идентификатор:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Attribute\CurrentUser; use Symfony\Component\Security\Core\User\UserInterface; class UserController extends AbstractController { public function index(#[CurrentUser] UserInterface $user): Response { return new Response($user->getUserIdentifier()); } } ?>

Результат выполнения кода для авторизованного пользователя:

"abcde"

Пример

Давайте получим роли текущего пользователя:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Attribute\CurrentUser; use Symfony\Component\Security\Core\User\UserInterface; class UserController extends AbstractController { public function roles(#[CurrentUser] UserInterface $user): Response { $roles = implode(', ', $user->getRoles()); return new Response($roles); } } ?>

Результат выполнения кода:

"ROLE_USER, ROLE_ADMIN"

Пример

Давайте проверим, что атрибут возвращает именно объект UserInterface, и выведем класс пользователя:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Attribute\CurrentUser; use Symfony\Component\Security\Core\User\UserInterface; class UserController extends AbstractController { public function info(#[CurrentUser] UserInterface $user): Response { return new Response(get_class($user)); } } ?>

Результат выполнения кода:

"App\Entity\User"

Смотрите также

  • класс Security,
    который предоставляет доступ к текущему пользователю
  • метод getUser,
    который возвращает текущего пользователя
  • интерфейс UserInterface,
    который должны реализовывать классы пользователей
  • метод getUserIdentifier,
    который возвращает идентификатор пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить