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

Команда make:security:form-login

Команда make:security:form-login создаёт контроллер формы входа, Twig-шаблон и автоматически настраивает файл config/packages/security.yaml. После выполнения команды в проекте появляется готовая страница с полями _username и _password, а также маршрут app_login. Команда входит в состав пакета symfony/maker-bundle.

Синтаксис

php bin/console make:security:form-login

При выполнении команда задаёт интерактивные вопросы: имя контроллера, пространство имён, путь для редиректа после успешного входа и адрес выхода из системы.

Пример

Давайте создадим форму входа в проект:

php bin/console make:security:form-login

В интерактивном режиме ответим на вопросы мастера:

Choose a name for the controller class [SecurityController]: SecurityController Choose a name for the login route [app_login]: app_login Choose a URL to redirect to after successful login [/]: / Do you want to add a logout route? (yes/no) [yes]: yes Choose a name for the logout route [app_logout]: app_logout

После генерации появится контроллер с методом входа:

<?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\Http\Authentication\AuthenticationUtils; class SecurityController extends AbstractController { #[Route(path: '/login', name: 'app_login')] public function login(AuthenticationUtils $authenticationUtils): Response { $error = $authenticationUtils->getLastAuthenticationError(); $lastUsername = $authenticationUtils->getLastUsername(); return $this->render('security/login.html.twig', [ 'last_username' => $lastUsername, 'error' => $error, ]); } #[Route(path: '/logout', name: 'app_logout')] public function logout(): void { throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); } } ?>

Также будет создан Twig-шаблон формы входа:

{% extends 'base.html.twig' %} {% block title %}Log in!{% endblock %} {% block body %} <form method="post"> {% if error %} <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div> {% endif %} {% if app.user %} <div class="mb-3"> You are logged in as {{ app.user.userIdentifier }}, <a href="{{ path('app_logout') }}">Logout</a> </div> {% endif %} <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1> <label for="username">Username</label> <input type="text" value="{{ last_username }}" name="_username" id="username" class="form-control" autocomplete="username" required autofocus> <label for="password">Password</label> <input type="password" name="_password" id="password" class="form-control" autocomplete="current-password" required> <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"> <button class="btn btn-lg btn-primary" type="submit"> Sign in </button> </form> {% endblock %}

Результат выполнения команды - готовая страница входа по адресу /login с полями для логина и пароля.

Пример

Давайте настроим файрвол так, чтобы он использовал форму входа. Команда make:security:form-login вносит изменения в файл config/packages/security.yaml автоматически:

security: password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: users_in_memory: { memory: null } firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: lazy: true provider: users_in_memory form_login: login_path: app_login check_path: app_login enable_csrf: true logout: path: app_logout target: / access_control: - { path: ^/login, roles: PUBLIC_ACCESS } - { path: ^/, roles: ROLE_USER }

Теперь любой запрос к корню сайта будет перенаправлять неавторизованного пользователя на страницу входа.

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

  • команда make:user,
    которая создаёт класс пользователя для аутентификации
  • команда make:auth,
    которая создаёт пустой аутентификатор для своей логики входа
  • команда make:registration-form,
    которая создаёт форму регистрации нового пользователя
  • команда make:reset-password,
    которая создаёт форму сброса пароля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить