2017-03-20 1 views
5

api.php 파일의 경로를 할당 할 때마다 401: Unauthenticated -Error가 발생합니다.Laravel 5.4 + Ajax는 401 인증되지 않음

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

임 호출이 사용 JQuery와 아약스 :

은 경로 인 'middleware' => 'auth:api' 부분을 제외하면

<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> 

그래서이 완벽한 작동하지만 난 그냥 액세스 할 수 있도록하고 싶지 않아 내 어떤 형태의 인증도없는 내부 API.

api가 수행하는 작업은 jQuery Ui의 Sortable의 직렬화를 사용하는 ID 배열을 보내는 것입니다. 그런 다음 ApiController가이를 통해 특정 제품의 모든 이미지를 정렬하고 업데이트합니다.

나는 CSRF 토큰을 포함 시켰습니다

모든 Ajax 요청에 메타 태그에 csrf_token()를 넣고 그것을 연결하여 Laravel 문서에 명시된 좋아 : 나는 또한 크롬의 네트워크 탭에서 볼 수 있듯이

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

입니다 요청에 두 개의 쿠키를 추가합니다.

enter image description here

+0

하이는 아직 해결책을 발견했다 : 그것은 HTTP에 대해 기본 인증입니까? – utdev

+0

@utdev 슬프게도. 그동안 그랬니? 미리 감사드립니다. – PoTTii

+0

인증 세부 정보 (토큰)를 제공하거나 미들웨어를 제거 하시겠습니까? –

답변

1

점은 인증되지 않은 것입니다. CSRF 토큰은 인증 토큰이 아닙니다.

api에 대해 사용자를 인증하고 (예를 들어) 사용자가 API를 사용할 수 있도록 각 요청과 함께 보내는 고유 한 인증 토큰을 제공해야합니다.

은 어쩌면이 링크는 도움이 될 수 있습니다 : 워드 프로세서의

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

이 부분 아마 도움도.

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

특히 일부 "비 저장 HTTP 기본 인증"