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

Метод login класса Security

Метод login класса Security выполняет программную аутентификацию пользователя в приложении Symfony. Первым параметром передаётся объект пользователя, вторым - имя файрвола, третьим - массив ролей. После вызова пользователь считается вошедшим в систему, а его токен сохраняется в хранилище TokenStorage.

Метод удобен, когда нужно войти в систему без формы логина: например, после регистрации, при входе через API или в тестах. Если файрвол не указан, берётся файрвол по умолчанию. Роли можно не передавать - тогда будут использованы роли пользователя.

Синтаксис

public function login(UserInterface $user, string $firewallName = 'main', array $roles = []): void

Пример

Давайте выполним вход пользователя в контроллере после его регистрации:

<?php namespace AppController; use AppEntityUser; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentSecurityCoreSecurity; class ArticleController extends AbstractController { #[Route('/user/register', name: 'user_register')] public function register(EntityManagerInterface $em, Security $security): Response { $user = new User(); $user->setEmail('user@example.com'); $em->persist($user); $em->flush(); $security->login($user, 'main', ['ROLE_USER']); return new Response('user logged in'); } } ?>

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

"user logged in"

Пример

Давайте проверим, что после вызова login пользователь действительно аутентифицирован:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentSecurityCoreSecurity; class ArticleController extends AbstractController { #[Route('/user/login', name: 'user_login')] public function login(Security $security): Response { $user = new User(); $user->setEmail('user@example.com'); $security->login($user); $current = $security->getUser(); return new Response($current->getUserIdentifier()); } } ?>

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

"user@example.com"

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

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