2017-03-20 81 views
5

api.phpファイルのルートを割り当てようとすると、401: Unauthenticated -Errorと表示されます。Laravel 5.4 + Ajaxは401未認証

これはルートです:jQueryのAjaxのを使用して、これを呼び出す

Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function() { 
    Route::post('admin/product-image-sort', '[email protected]')->name('api.save-product-image-sort'); 
}); 

イム:

<script> 

     $('#sortable-image-container').sortable({ 
      items: '> .row > *', 
      update: function (event, ui) { 
       var data = $(this).sortable('serialize'); 
       console.log(data); 
       $.ajax({ 
        data: data, 
        type: 'POST', 
        url: "{{ route('api.save-product-image-sort') }}", 
        success: function (data) { 
         if(data == "success"){ 
          $.notify({ 
           icon: 'pe-7s-close-circle', 
           message: "Sucessfully saved the Image Sorting" 
          },{ 
           type: 'success', 
           timer: 500 
          }); 
         } 
        } 
       }); 
      } 
     }); 
    </script> 

ので'middleware' => 'auth:api'部分を除いたときに、これは完璧に動作しますが、私はちょうど私がアクセスできるようにしたくありません認証のない内部API

apiの動作は、jQuery UiのSortableのシリアル化を使用しているIDの配列を送信することです。その後、ApiControllerはそれを見直し、特定の製品のすべてのイメージのソートを更新しました。メタタグにcsrf_token()を置くと、すべてのAjaxリクエストに取り付けることにより、Laravelドキュメントに記載されたように、私はCSRFトークンを含めました

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

私もChromeのネットワーク]タブで見ることができるようにされますリクエストに2つのCookieが追加されていることを確認します。

enter image description here

+0

こんにちはあなたはまだ解決策を見つけたのですか? – utdev

+0

@utdev悲しいことではありません。あなたはその間にやりましたか?前もって感謝します。 – PoTTii

+0

認証の詳細(トークン)を入力するか、ミドルウェアを削除しますか? –

答えて

1

ポイントは、あなたが認証されていないです。 CSRFトークンは認証トークンではありません。

apiに対してユーザーを認証し、APIを使用することが許可されているかどうかを確認するために、各要求と共に送信する独自​​の認証トークンを(たとえば)与える必要があります。

たぶん、このリンクは役に立つかもしれ:

https://laracasts.com/discuss/channels/laravel/53-api-routes-auth-middleware-confusion

ドキュメントのこの部分は多分便利すぎ。これは、HTTP基本認証についてです:

https://laravel.com/docs/5.4/authentication#http-basic-authentication

特に一部「ステートレスHTTP基本認証」

関連する問題