Всякий раз, когда я пытаюсь назначить маршрут из моего api.php
файла, я получаю 401: Unauthenticated
-ошибку.
Это маршрут:
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function () {
Route::post('admin/product-image-sort', 'ApiController@SaveProductImageSort')->name('api.save-product-image-sort');
});
Я вызываю это с помощью Jquery Ajax:
<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, так это отправляет массив идентификаторов, которые он получил, используя сериализацию Sortable jQuery Ui. Затем ApiController просматривает это и обновляет сортировку каждого изображения определенного продукта.
Я включил токен CSRF, как указано в документах Laravel, поместив csrf_token()
в метатег и прикрепив его к каждому запросу Ajax:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Как я также вижу на вкладке сети Chrome, он добавляет к запросу два файла cookie.
auth
промежуточное ПО для веб-аутентификации вместоauth:api
, которое используется для общедоступного API, которому требуется токен аутентификации. - person Bagaskara Wisnu Gunawan   schedule 26.04.2017