【问题标题】:How can I get the client id from a request with a Client Credentials Grant Token [duplicate]如何从具有客户端凭据授予令牌的请求中获取客户端 ID [重复]
【发布时间】:2018-01-25 00:04:33
【问题描述】:

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

【问题讨论】:

  • 你可以得到这样的用户$request->user(),登录用户附加在$request变量中
  • 我认为没有用户,因为它正在使用客户端凭据。

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


【解决方案1】:

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

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。

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 2022-07-14
    • 2017-03-11
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多