我在 laravel 中设置了一个身份验证系统,它运行良好。我创建了一个rest api来调用一些数据,这个api的路由受到auth中间件和一个带有令牌驱动程序的api保护。
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
'hash' => false,
],
我的管理员表中有一个名为 api_token 的文件,包含每个管理员的令牌 如果我在邮递员中调用这个 api 并在授权选项卡中传递不记名令牌,它可以正常工作并检索数据
但是,我尝试通过 AJAX 数据表调用相同的 API,并且我传递了完全相同的不记名令牌,但它一直在 Chrome 控制台中显示 401 Unauthoriszed 错误。
谁能解释一下为什么令牌没有传递给 api 调用以及如何让它通过?
我的 api.php 文件:
Route::group(['middleware' => 'auth:admin-api'], function(){
Route::get('/admins', [APIController::class, 'getAdmins'])->name('getAdmins');
});
我的 api 控制器方法,它调用数据库中的数据:
public function getAdmins(){
$query = AdminResource::collection(Admin::all());
return datatables($query)->make(true);
}
我的ajax代码:
<script type="text/javascript">
$(document).ready(function() {
// DataTable
$('#dataTable').DataTable({
headers: {
'X-Authorization': 'odhTIEX6PP4oBwC39JFpAbWF8TaZ5iL8JkB0PMd4Lg9WrbQFgqwT5k9pzPw9iWdS3jYFmNcoJrnydgaM',
'Authorization': 'Bearer odhTIEX6PP4oBwC39JFpAbWF8TaZ5iL8JkB0PMd4Lg9WrbQFgqwT5k9pzPw9iWdS3jYFmNcoJrnydgaM',
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Accept': 'application/json',
},
processing: true,
'language': {
'loadingRecords': ' ',
'processing': '<div class="spinner-border text-primary"></div>'
},
serverSide: true,
ajax: "{{ route('getAdmins') }}",
columns: [{
data: 'first_name'
},
{
data: 'last_name'
},
{
data: 'email'
},
{
data: 'phone'
},
{
data: 'role'
},
]
});
});
</script>