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

Метод supports

Метод supports класса Voter используется в системе авторизации Symfony. Он определяет, должен ли данный Voter принимать участие в голосовании за конкретный атрибут (например, роль или право) и субъект (например, объект статьи или пользователя). Если метод возвращает true, то Symfony вызывает метод voteOnAttribute для принятия решения о доступе. Если false - Voter игнорируется. Первым параметром передаётся атрибут, вторым - субъект.

Синтаксис

protected function supports(string $attribute, mixed $subject): bool

Пример

Давайте создадим Voter, который поддерживает только атрибут EDIT и субъекты типа Article:

<?php namespace AppSecurity; use AppEntityArticle; use SymfonyComponentSecurityCoreAuthorizationVoterVoter; use SymfonyComponentSecurityCoreAuthorizationVoterVote; class ArticleVoter extends Voter { public const EDIT = 'EDIT'; protected function supports(string $attribute, mixed $subject): bool { if ($attribute !== self::EDIT) { return false; } if (!$subject instanceof Article) { return false; } return true; } protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool { // logic return true; } } ?>

Результат выполнения метода supports для атрибута EDIT и объекта Article:

true

Пример

Давайте проверим, что Voter возвращает false, если атрибут не совпадает:

<?php namespace AppSecurity; use AppEntityArticle; use SymfonyComponentSecurityCoreAuthorizationVoterVoter; class ArticleVoter extends Voter { public const EDIT = 'EDIT'; protected function supports(string $attribute, mixed $subject): bool { return $attribute === self::EDIT && $subject instanceof Article; } protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool { // logic return true; } } ?>

Результат выполнения метода supports для атрибута DELETE:

false

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

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