Подтвердить что ты не робот

Как работает маршрут check_path login без контроллера/действия по умолчанию?

Я работаю над проектом symfony 2.3, имеющим следующий код маршрутизации

just2_frontend_logincheck:
    pattern:   /login_check

У него нет

defaults:{ _controller: testBundle:User:login }

Но он работает. Но я не знаю, как работает маршрутизация. Является ли это возможным? Просьба сообщить мне о маршрутизации.

4b9b3361

Ответ 1

check_path маршрут/путь используется вашим брандмауэром для регистрации запросов на вход.

Этот маршрут никогда не доступен. Это маршрут/URL-адрес ваших сообщений в форме входа в систему, и запрос должен быть обработан службой поставщика брандмауэра.

Если выполняется действие маршрута check_path, в брандмауэре что-то не так (запрос не обрабатывается вашим брандмауэром).

Как вы видите здесь check_path FOSUserBundle перенаправляется на SecurityController::checkAction и просто бросает RuntimeException.

Конфигурация check_path может быть найдена в app/config/security.yml под security.firewalls.<firewallname>.form_login.check_path.

Это может быть либо шаблон типа /login_check, либо как в вашем случае имя маршрута i.e. just2_frontend_logincheck, но не существует основного действия.

security:
    providers:
         your_provider_name: your_provider_service  # authentication provider
         # ...

    firewalls:                                 # Required
        your_firewall_name:
            # ...

            provider: your_provider_name
            form_login:              
                check_path: /login_check       # submit the login form here
                                               # in your case a route name:
                                               # just2_frontend_logincheck

Под капотом symfony вызывает метод authenticate() службы your_provider_service, чтобы проверить предоставленные учетные данные.

Вы можете найти класс, используемый в качестве поставщика услуг, используя:

app/console container:debug --show-private your_provider_service