Laravel API对POST请求进行身份验证,但使用GET返回“未经身份验证”

时间:2020-02-18 11:33:36

标签: laravel api authentication routes

我已经设置了一个路由组,以使用令牌对我的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请求失败?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

您还可以清除配置并尝试

php artisan config:clear

您也可以添加@csrf。