1

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

我在 services.yml 中注册了一个事件监听器,定义了 EventListener/OAuthEventListener 类,其中包含一个在事件被调用时触发的方法。

在我的 API 中,我只是调用 /oauth/v2/token 来登录/刷新令牌。这些调用由 fosrestbundle 处理。

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

4

1 回答 1

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

于 2015-12-29T22:31:04.007 回答