【问题标题】:Laravel Passport Consuming own API with Axios 401 UnauthenticatedLaravel Passport 使用 Axios 401 使用自己的 API 未经身份验证
【发布时间】:2020-08-26 23:26:59
【问题描述】:

我似乎无法使用 Axios 使用我自己的 Laravel API,我尝试了几乎所有遇到的解决方案 谁能帮帮我,

我有正确的:

  1. 已安装。
  2. 注册护照服务商。
  3. 迁移和生成的护照密钥。
  4. 在我的用户模型中添加了HasApiTokens trait。
  5. Passport::routes() 添加到AuthServiceProvider.php
  6. 更改我的config\auth.php
  7. \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class 添加到我的Web 中间件组的最后一个位置。根据 laravel 使用 javascript 使用自己的 api 的文档。

我已经在 web 浏览器正常 web 登录的 vue 组件中使用 Axios 对其进行了测试。并通过邮递员:api-login,使用返回的令牌使 api 调用它在我的开发机器上工作。但是在我的生产服务器(共享主机)上,它使用 Web 登录并在 vue 组件中使用 Axios 不断在 Web 浏览器中返回“未授权”,并且邮递员中的 API 调用在登录后也返回“未授权”,我得到一个用于制作的令牌邮递员电话。

我检查了请求标头也已发送:

  1. x-csrf-token
  2. x-xsrf-token
  3. 也包含在 cookie 标头中

【问题讨论】:

    标签: php laravel axios laravel-passport


    【解决方案1】:

    当您在共享主机上运行 laravel 时,请确保以下事项。

    1. 检查您的根 URL 是否与公用文件夹正确设置或您已将公用文件夹的文件移动到根目录中。
    2. 最重要的是检查您是否拥有 .env 文件,并且所有文件和文件夹都具有适当的权限。
    3. 另外,检查所有使用正确 PHP 版本正确加载的 PHP 模块(laravel 要求)。
    4. 如果上述步骤正确,那么问题可能是您使用 fcgi 而不是常规 PHP 模块的共享服务器。因此,HTTP_AUTHORIZATION 在那里失败。您可以将以下代码添加到应该执行 HTTP_AUTHORIZATION 并解决问题的 .htaccess 文件 RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 中。

    我希望这些可以解决您的问题。

    【讨论】:

    • 好的,那么问题可能是您的共享服务器使用 fcgi 而不是常规的 PHP 模块。因此,HTTP_AUTHORIZATION 在那里失败。您可以将以下代码添加到应该执行 HTTP_AUTHORIZATION 并解决问题的 .htaccess 文件 RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 中。
    • 很高兴它对您有所帮助...请正确标记,以便人们可以从中获得帮助。快乐编码
    • 更改 RewriteEngine, RewriteCond, RewriteRule 无效。请帮帮我
    • 您遇到的错误是什么?在此处发布您的 .htaccess 内容。另外,请确保您已检查此答案中描述的所有步骤。
    • <IfModule mod_rewrite.c>
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2018-07-10
    • 2019-10-07
    • 2022-01-01
    相关资源
    最近更新 更多