Проблемы с брандмауэром при использовании FOSUserBundle

Я пытаюсь включить FOSUserBundle в существующий проект, в котором есть система аутентификации для администратора, и я использую FOSUserBundle для пользователей, но у меня возникает ошибка брандмауэра!

Я использую этот URL: http://localhost/myproject/web/app_dev.php/fr/user/login

и ошибка:

InvalidConfigurationException in BaseNode.php line 313:
Invalid configuration for path "security.firewalls.Fos_secured_area": The check_path "/login_check" for login method "form_login" is not matched by the firewall pattern "^/(fr|en)/user/.*".

это моя безопасность.yml

 admin:
            entity: { class: AppBundle:Admin}

        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:

        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        Fos_secured_area:
            pattern:  ^/(%app_locales%)/User/.*
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
            logout:       true
            anonymous:    true



        admin_secured_area:
            pattern: ^/(%app_locales%)/admin/.*
            anonymous: true
            provider: admin
            form_login:
                check_path: security_admin_login 
                login_path: security_admin_login
                csrf_token_generator: security.csrf.token_manager
                default_target_path: admin_page
            logout:
                path: admin_logout
                target: homepage
  access_control:

     - { path: ^/(%app_locales%)/User/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/(%app_locales%)/User/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/(%app_locales%)/User/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }

моя маршрутизация.yml

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"


app:
    resource: '@AppBundle/Controller/'
    type:     annotation
    prefix:   /{_locale}
    requirements:
        _locale: '%app_locales%'
    defaults:
        _locale: '%locale%'

попробуйте изменить «шаблон: ^/(%app_locales%)/User/.*» на «шаблон: ^/». Я думаю, что в вашем случае эта скороговорка не нужна.

carmel 27.05.2019 14:32

@caramel спасибо, вы можете оставить свой комментарий в качестве ответа, чтобы я мог его принять

Julie 28.05.2019 11:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
2
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй изменить

pattern: ^/(%app_locales%)/User/.*

к

pattern: ^/

Я думаю, что в вашем случае нет необходимости в этом шаблоне

Краткое объяснение: Шаблон представляет собой регулярное выражение, которое определяет, какое правило брандмауэра будет применяться для того или иного маршрута.

Fosuserbundle использует маршрут, похожий на /login_check, для обратного вызова действия входа в систему. И поскольку он не соответствует вашему шаблону, правило Fos_secured_area не будет применяться для этого маршрута.

Другие вопросы по теме