用护照消费自己的 API 时“未认证”?
“Unauthenticated” when consuming own API with passport?
我已经按照文档说明安装了 passport,并在“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');
});
在blade中:
<script>
$(document).ready(function() {
$('#Table').DataTable({
"order": [],
"processing": true,
"serverSide": true,
"ajax": "{{ route('api.getItemsData') }}",
"columns": [{
"data": "name"
}, {
"data": "created_at"
}],
});
});
</script>
但我收到的回复是:
{"message":"Unauthenticated."}
您需要将您在请求 header 中从 Passport 获得的 access_token
传递为
$.ajaxSetup({
headers: {
'Authorization': 'Bearer ' + 'your access token'
}
});
好的,Passport 正在寻找“X-CSRF-TOKEN”,但不在请求中header,所以必须加..
所以,对于这种情况:
"ajax": {
"url": "{{ route('api.getItemsData') }}",
'beforeSend': function (request) {
request.setRequestHeader("X-CSRF-TOKEN", '{{ csrf_token() }}');
}
},
我已经按照文档说明安装了 passport,并在“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');
});
在blade中:
<script>
$(document).ready(function() {
$('#Table').DataTable({
"order": [],
"processing": true,
"serverSide": true,
"ajax": "{{ route('api.getItemsData') }}",
"columns": [{
"data": "name"
}, {
"data": "created_at"
}],
});
});
</script>
但我收到的回复是:
{"message":"Unauthenticated."}
您需要将您在请求 header 中从 Passport 获得的 access_token
传递为
$.ajaxSetup({
headers: {
'Authorization': 'Bearer ' + 'your access token'
}
});
好的,Passport 正在寻找“X-CSRF-TOKEN”,但不在请求中header,所以必须加.. 所以,对于这种情况:
"ajax": {
"url": "{{ route('api.getItemsData') }}",
'beforeSend': function (request) {
request.setRequestHeader("X-CSRF-TOKEN", '{{ csrf_token() }}');
}
},