【问题标题】:Laravel api authenticates POST requests but returns 'Unauthenticated' with GETLaravel api 对 POST 请求进行身份验证,但使用 GET 返回“未验证”
【发布时间】:2020-06-02 10:03:54
【问题描述】:

我已经设置了一个路由组来使用令牌验证我的 API 调用。

POST 请求工作正常,有效令牌通过身份验证,无效令牌按预期返回“未验证”。

每次发出 GET 请求时,我都会得到“未经身份验证”。

我使用与发出 POST 请求相同的 api_token 发出 GET 请求,但仍然得到“未经身份验证”

这是我的路线组

Route::group(['middleware' => ['auth:api', 'api']], function () {
    Route::post('/', 'ApiPostController@store');
    Route::get('/', 'ApiPostController@fetch');
});

我尝试从组中删除 POST 路由,但没有成功。尝试更改也没有做任何事情的路线(从//get)。

即使我发送的是有效令牌,是什么导致 GET 请求失败?

【问题讨论】:

  • 如何发送api_token?在标题、查询等中?
  • @V-K 我在请求正文中发送它,我正在使用邮递员
  • 我认为问题可能出在其中,因为 GET 和 POST 的请求正文不同
  • @V-K 这确实是问题所在。我将它发送到这样的标题中:Authorization: Bearer api_token 并且它有效。如果您想输入答案,我可以接受它作为解决方案。

标签: laravel api authentication routes


【解决方案1】:

问题是您在正文中发送api_token,而 GET 和 POST 请求的请求正文不同。在 GET 正文中发送令牌也是不安全的,这就是您必须通过标头发送令牌的原因。

【讨论】:

    【解决方案2】:

    如果您在 Apache 服务器中,您可以尝试在 .htaccess 中添加这些行

    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
    

    你也可以清空配置试试

    php artisan config:clear
    

    你也可以添加@csrf。

    【讨论】:

    • 我目前正在使用 php artisan serve --host=0.0.0.0 在本地运行该项目。清除配置也没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 2014-12-20
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多