В Symfony 5.2.2 вы можете сделать basic authentication на конкретный роут, используя компонент Security Bundle. Для этого вам понадобится выполнить следующие шаги:
1. Установите компонент Security Bundle, если он еще не установлен, с помощью Composer:
composer require symfony/security-bundle
2. Создайте класс-контроллер, который будет обрабатывать ваш роут:
// src/Controller/MyController.php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAnnotationRoute; class MyController extends AbstractController { /** * @Route("/my-route") */ public function myRoute() { // Ваш код обработки роута return new Response('Hello, World!'); } }
3. Создайте конфигурационный файл для Security Bundle:
# config/packages/security.yaml security: # ... firewalls: main: http_basic: true pattern: ^/my-route provider: in_memory providers: in_memory: memory: users: user: { password: $argon2id$v=19$m=65536,t=4,p=1$/+JMy8mgiLuWbPSUeBvYbQ$Rh/aTnS4B9aU6kw4i23Ekn2MuwRKa6rP9DJIJspemSU, roles: ROLE_USER }
В данном примере мы использовали метод аутентификации http_basic
, который требует передачи имени пользователя и пароля в заголовке запроса. Мы также указали путь к роуту /my-route
с помощью опции pattern
. Конфигурация provider
указывает, что мы хотим использовать предоставляемый in-memory провайдер для аутентификации.
4. Теперь, когда вы настроили аутентификацию, вы можете получить имя пользователя в вашем методе контроллера:
// src/Controller/MyController.php // ... use SymfonyComponentSecurityCoreSecurity; class MyController extends AbstractController { // ... public function myRoute(Security $security) { $user = $security->getUser(); // Ваш код обработки роута return new Response('Hello, '.$user->getUsername().'!'); } }
5. Теперь, когда вы отправляете запрос на /my-route
, Symfony будет запрашивать у вас имя пользователя и пароль для аутентификации. Указанные вами учетные данные будут проверяться по нашей конфигурации in_memory
провайдера. Если аутентификация пройдет успешно, Symfony позволит вам получить имя пользователя в контроллере.
Теперь вы настроили базовую аутентификацию на конкретный роут в Symfony 5.2.2.