【问题标题】:Laravel API call failed. PostMan overrides Authorization header with Basic AuthLaravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头
【发布时间】:2017-09-05 05:18:47
【问题描述】:

您好,我正在尝试从 Postman 调用 API。
使用的框架是:Laravel

网站具有浏览器身份验证(使用 .htacess)
并且 API 有用户认证(Laravel Passport)(用户必须登录)

现在,

我需要调用一个 API 并包含两个标头,即

  • 我添加了带有用户名/密码的基本身份验证作为浏览器凭据

    基本身份验证:用户名/密码

  • 我在标题中添加了

    授权:承载 oauthtoken

(其中 oauthtoken 是从 API 调用 https://servername/auth 和基本身份验证中检索到的密钥:用户名/密码)

现在当我发送 API 调用时,

授权标头更改为:

授权:基本 some_key

因此我得到未经授权的回应。
有什么方法可以将浏览器凭据和用户身份验证标头一起发送吗?

【问题讨论】:

    标签: php laravel api authentication postman


    【解决方案1】:

    您在身份验证后检索到的 OAuth 令牌与 Postman 为基本身份验证附加的令牌不同。

    如果您希望在请求中使用您的 OAuth 令牌,我建议您查看 Postman 变量并将该令牌存储在其中。

    Here is an article that helped me build my Postman collection using JWT

    但是里面的一些脚本已经过时了。

    我将首先创建一个环境(本地),您可以在其中添加一个密钥来存储值为空的令牌 (oauth_token)。

    在 Postman 中的 auth 端点中,您可以检查 Tests 选项卡,您可以在其中放置脚本以更新 oauth 令牌:

    pm.test("Logged in successfully", function () {
        var jsonData = pm.response.json();
        pm.environment.set('oauth_token', jsonData.token);
    });
    

    在此之后,您可以将值为 {{oauth_token}} 的授权承载添加到使用 OAuth 令牌的端点。

    如果您想了解有关 Postman 变量的更多信息,这是一篇很棒的帖子 variables

    回顾一下:

    1. 将用户名和密码发送到身份验证端点
    2. 将 oauth 令牌存储在步骤 1 返回的 Postman 变量中
    3. 使用 {{VARIABLE_NAME}} 表示法将您的新令牌用作 Postman 变量

    【讨论】:

      【解决方案2】:

      我建议使用Guzzle Library

              $http = new \GuzzleHttp\Client;
              $response = $http->request('POST', 'http://quotible.web3box.com/oauth/token', [
                  'headers' => [
                      //you headers here
                  ],
                  'form_params'=>[
                      //your browser based parameters here
                  ]
              ]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-26
        • 2023-03-31
        • 2021-09-19
        • 2020-06-10
        • 2018-11-07
        • 2013-10-14
        • 1970-01-01
        • 2021-10-24
        相关资源
        最近更新 更多