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

Класс AuthorizationChecker

Класс AuthorizationChecker - это сервис Symfony, который проверяет права доступа текущего пользователя. Он получает токен из TokenStorage и передаёт его системе голосования (Voter), которая выносит решение. Основной метод isGranted принимает атрибут (обычно роль или имя Voter-атрибута) и возвращает true, если доступ разрешён, и false - если нет.

Синтаксис

<?php public function isGranted(mixed $attribute, mixed $subject = null): bool ?>

Пример

Давайте внедрим AuthorizationChecker в контроллер и проверим роль ROLE_ADMIN:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(AuthorizationCheckerInterface $checker): Response { if ($checker->isGranted('ROLE_ADMIN')) { return new Response('admin page'); } return new Response('access denied'); } } ?>

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

"admin page"

Пример

Давайте проверим доступ к конкретному объекту, передав его вторым параметром subject:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(Article $article, AuthorizationCheckerInterface $checker): Response { if ($checker->isGranted('ARTICLE_EDIT', $article)) { return new Response('edit allowed'); } return new Response('edit denied'); } } ?>

Результат выполнения кода, если Voter разрешил доступ:

"edit allowed"

Пример

Давайте вызовем метод isGranted из Twig-шаблона через встроенную функцию is_granted:

{% if is_granted('ROLE_ADMIN') %} <p>admin panel</p> {% else %} <p>user panel</p> {% endif %}

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

<p>admin panel</p>

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

  • метод isGranted,
    который проверяет права доступа
  • класс Security,
    который предоставляет доступ к сервисам безопасности
  • класс TokenStorage,
    который хранит токен текущего пользователя
  • класс Voter,
    который выносит решение о доступе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить