使用护照自带API时“未经身份验证”?

时间:2018-01-31 11:53:03

标签: laravel laravel-5 laravel-passport

我已按说明文件安装了护照,并在此行中添加了网络'中间件:

'web' => [
    // Other middleware...
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

现在,Iam尝试使用带有ajax的datatable(datatables.net)获取一些数据:

api.php

Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function()
{
  Route::get('/itemsData', 'DataController@getItemsData')->name('api.getItemsData');

});
刀片中的

<script>
    $(document).ready(function() {
        $('#Table').DataTable({
            "order": [],
            "processing": true,
            "serverSide": true,
            "ajax": "{{ route('api.getItemsData') }}",
            "columns": [{
                "data": "name"
            }, {
                "data": "created_at"
            }],
        });
    });
</script>

但是我得到了这个回复:

{"message":"Unauthenticated."}

2 个答案:

答案 0 :(得分:2)

好的,Passport正在寻找“ X-CSRF-TOKEN ”,不在请求标题中,因此必须添加.. 所以,对于这种情况:

 "ajax": {
     "url": "{{ route('api.getItemsData') }}",
     'beforeSend': function (request) {
             request.setRequestHeader("X-CSRF-TOKEN", '{{ csrf_token() }}');
     }
 },

答案 1 :(得分:1)

您需要将从Passport获取的access_token作为

传递给请求标头
$.ajaxSetup({
    headers: {
        'Authorization': 'Bearer ' + 'your access token'
    }
});