Событие регистрации FOSAuthBundle onPreAuthorizationProcess никогда не вызывается

Я хотел бы настроить прослушиватель событий на OAuth для регистрации сбоев и подключений.

Я зарегистрировал прослушиватель событий в services.yml, определил класс EventListener / OAuthEventListener с помощью метода, запускаемого при вызове события.

В моем API я просто вызываю / oauth / v2 / token для login / refresh_token. Эти звонки обрабатываются fosrestbundle.

Мои зарегистрированные методы никогда не называются.
Этот URL никогда не вызывает событие fos_oauth_server.pre_authorization_process?

1

Решение

Конфигурация маршрута:

<route id="fos_oauth_server_token" path="/oauth/v2/token" methods="GET POST">
<default key="_controller">fos_oauth_server.controller.token:tokenAction</default>
</route>

Контроллер сервиса:

    <service id="fos_oauth_server.controller.token" class="FOS\OAuthServerBundle\Controller\TokenController">
<argument type="service" id="fos_oauth_server.server" />
</service>

Серверная служба:

<parameters>
<parameter key="fos_oauth_server.server.class">OAuth2\OAuth2</parameter>
</parameters>
<service id="fos_oauth_server.server" class="%fos_oauth_server.server.class%">
<argument type="service" id="fos_oauth_server.storage" />
<argument>%fos_oauth_server.server.options%</argument>
</service>

Метод контроллера:

public function tokenAction(Request $request)
{
try {
return $this->server->grantAccessToken($request);
} catch (OAuth2ServerException $e) {
return $e->getHttpResponse();
}
}

Предполагая, что вы используете значения по умолчанию, служба контроллера для этого маршрута просто делегирует библиотеку сервера. pre_authorization событие вызывается во время авторизации, обработанной /oauth/v2/auth,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]