如何从具有客户端凭据授予令牌的请求中获取客户端ID

时间:2018-01-24 15:29:17

标签: php laravel laravel-5 oauth-2.0 laravel-passport

我正在使用客户端凭据授予令牌 (https://laravel.com/docs/5.5/passport#client-credentials-grant-tokens) 我希望从设置了Bearer Authorization标头的请求中获取客户端ID。 有没有一个简单的方法来获得这个ID?

1 个答案:

答案 0 :(得分:1)

我最终在我自己的CheckClientCredentials类中将客户端ID设置为请求变量。 我将vendor / laravel / passport / src / Http / Middleware / CheckClientController.php复制到app / Http / Middleware / CheckClientController.php并将handle方法更新为

public function handle($request, Closure $next, ...$scopes)
{
    $psr = (new DiactorosFactory)->createRequest($request);

    try {
        $psr = $this->server->validateAuthenticatedRequest($psr);
    } catch (OAuthServerException $e) {
        throw new AuthenticationException;
    }

    $request["oauth_client_id"] = $psr->getAttribute('oauth_client_id');

    $this->validateScopes($psr, $scopes);

    return $next($request);
}

然后我在app / Http / Kernel.php中更新了对CheckClientCredentials的引用 然后我可以使用$ request [“oauth_client_id”]在我的控制器中获取客户端ID。