永远不会调用FOSAuthBundle注册事件onPreAuthorizationProcess

时间:2015-12-29 21:09:05

标签: php symfony fosoauthserverbundle

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

我在services.yml中注册了一个事件监听器,使用一个方法定义EventListener / OAuthEventListener类,以便在调用事件时触发。

在我的API中,我只需要调用/ oauth / v2 / token来登录/ refresh_token。这些电话是由fosrestbundle处理的。

我的注册方法从未被注册过。 此URL是否永远不会触发fos_oauth_server.pre_authorization_process事件?

1 个答案:

答案 0 :(得分: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事件。