FOSAuthBundle 注册事件 onPreAuthorizationProcess 从未调用

FOSAuthBundle Register Event onPreAuthorizationProcess never called

我想在 OAuth 上设置事件侦听器以记录连接失败和连接。

我在 services.yml 中注册了一个事件侦听器,定义了 EventListener/OAuthEventListener class 以及调用事件时触发的方法。

在我的 API 中,我只是将 /oauth/v2/token 调用到 login/refresh_token。这些调用由 fosrestbundle 处理。

我注册的方法从未被调用过。 这个 url 永远不会触发 fos_oauth_server.pre_authorization_process 事件吗?

路由配置:

<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 处理的授权期间被调用。