Laravel 5.4 Api Route 401

时间:2017-04-07 14:45:08

标签: php laravel api laravel-5.3 laravel-5.4

我建立了一个新的laravel 5.4项目。

我试图在我的api路线中执行以下步骤,但不知怎的,它们不起作用。

在我的app.js文件中,我有这个ajax调用:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
    }
});
$.ajax({
    url: 'api/postStream',
    type: 'post',
    data: { imgData: imgData },
    success:function(data) {
        console.log('success');
    }
});

我的Api路线看起来像这样:

Route::group(['middleware' => 'auth:api'], function()
{
    Route::post('postStream', ['as' => 'image', 'uses' => 'ApiController@postStream']);
});

我的控制员:

public function postStream(Request $request)
{
    $imgData = $request->imgData;
    ...
}

但是我的chrome dev控制台出现了这个错误:

POST http://localhost/app/public/api/postStream 401 (Unauthorized)

在网络工具中:

{error: "Unauthenticated."}
error
:
"Unauthenticated."

我想我有点不认识,但我不知道如何以这种方式实现。

1 个答案:

答案 0 :(得分:3)

它不起作用,因为您的路由受auth:api保护,返回401 unauthorized。通过auth:api的唯一方法是向每个请求发送您的身份验证令牌

var token = <?php json_encode(Auth::user()->api_token); ?>; //if you are using api_token

$.ajax({
    url: 'api/postStream',
    headers: {
        'Authorization':'Bearer ' + token,
    },
    type: 'post',
    ...
});

获得令牌的方式完全取决于您。您可以使用Passport或只是将api_token添加到users表的最简单的解决方案。

如果您想找到最便宜的解决方案,可以关注此帖:https://gistlog.co/JacobBennett/090369fbab0b31130b51