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

Класс Security

Класс Security - это сервис Symfony, который объединяет в себе функции TokenStorage и AuthorizationChecker. Он позволяет получить текущего пользователя, проверить его роли и получить токен аутентификации. Внедряется в контроллеры и сервисы через аргумент Security $security.

Синтаксис

use SymfonyBundleSecurityBundleSecurity; public function index(Security $security): Response { // ... }

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyBundleSecurityBundleSecurity; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Security $security): Response { $user = $security->getUser(); if ($user === null) { return new Response('user'); } return new Response($user->getUserIdentifier()); } } ?>

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

abcde

Пример

Давайте проверим, имеет ли пользователь роль ROLE_ADMIN:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyBundleSecurityBundleSecurity; class ArticleController extends AbstractController { #[Route('/admin', name: 'article_admin')] public function admin(Security $security): Response { if ($security->isGranted('ROLE_ADMIN')) { return new Response('hello'); } return new Response('user'); } } ?>

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

hello

Пример

Давайте получим объект токена и имя текущего файрвола:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyBundleSecurityBundleSecurity; class ArticleController extends AbstractController { #[Route('/token', name: 'article_token')] public function token(Security $security): Response { $token = $security->getToken(); $firewall = $security->getFirewallConfig($token); return new Response($firewall->getName()); } } ?>

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

main

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

  • метод getUser,
    который возвращает текущего пользователя
  • метод isGranted,
    который проверяет наличие прав у пользователя
  • метод getToken,
    который возвращает объект токена аутентификации
  • класс AuthorizationChecker,
    который лежит в основе проверки прав
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить