我已按说明文件安装了护照,并在此行中添加了网络'中间件:
'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."}
答案 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'
}
});