php 客户端的 Swagger 基本身份验证失败

Swagger basic authentication fails with php client

当我尝试使用从 yaml 文件生成的 php 客户端时,它似乎不起作用。即使我已经填写了身份验证配置,我仍然收到身份验证错误。但是当我用基本的身份验证选项替换生成的 API 中的选项变量时,它确实有效。请看下面的代码:

public function getLiveWegvakkenDataWithHttpInfo()
    {
        $returnType = '\Swagger\Client\Model\Wegvak[]';
        $request = $this->getLiveWegvakkenDataRequest();

    try {
        $options = $this->createHttpClientOption();
        try {
            $response = $this->client->send($request, $options);
        } catch (RequestException $e) {
            throw new ApiException(
                "[{$e->getCode()}] {$e->getMessage()}",
                $e->getCode(),
                $e->getResponse() ? $e->getResponse()->getHeaders() : null,
                $e->getResponse() ? $e->getResponse()->getBody()->getContents() : null
            );
        }

上面的代码不起作用,但是当我用这个替换 $options 时:

[
    'auth' => [
         'username',
         'password',
]]

确实有效。有人可以解释我做错了什么吗?因为标准实施不起作用对我来说似乎很奇怪。

最后我发现我的yaml文件没有包含这个:https://swagger.io/docs/specification/authentication/basic-authentication/

在上面的文档中说您需要此代码:

components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
security:
  - basicAuth: []

当您添加此代码时,它将在 API 代码中实施,以实际使用您在配置中填写的基本身份验证。否则没有它,它只会发出请求而不在请求中添加身份验证 header.

所以在添加这个并填写配置后它对我有用。