【问题标题】:“Unauthenticated” when consuming own API with passport?使用护照使用自己的 API 时“未经身份验证”?
【发布时间】:2018-07-10 12:36:00
【问题描述】:

我已按照文档说明安装了护照,并在“web”中间件中添加了这一行:

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

现在,我正在尝试使用带有 ajax 的数据表 (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."}

【问题讨论】:

    标签: laravel laravel-5 laravel-passport


    【解决方案1】:

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

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

    【讨论】:

    • 哈利路亚 :D 谢谢
    【解决方案2】:

    您需要将您从 Passport 获得的access_token 传递到请求标头中作为

    $.ajaxSetup({
        headers: {
            'Authorization': 'Bearer ' + 'your access token'
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 2020-08-26
      • 2017-01-06
      • 2019-02-28
      • 2018-05-02
      • 2018-08-31
      • 2017-04-24
      • 1970-01-01
      • 2018-11-06
      相关资源
      最近更新 更多