javascript - 通过AJAX数据表调用laravel API时出现401未经授权的错误
问题描述
我在 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>
解决方案
推荐阅读
- c++ - clang 和 gcc 不实现 std::hardware_{constructive, destroyive}_interference_size 的原因是什么?
- javascript - 选择不同的值时 setInterval 无法正常工作
- build - 自托管构建代理花费太多时间来成功运行作业
- sql - 用于在 SSRS 报告中显示动态日期范围变化的 Visual Basic 代码
- android - 使用命令行工具设置颤振的问题
- java - Java 如何为 addDeserializer 创建扩展 SimpleModule 的模块类?
- django - 在模板中侦听的 Django ManyToMany 查询
- javascript - JS查询未定义
- oracle11g - oracle 数据库 19c - 将 [rolename] 授予 [user] 错误 ORA-01917: 用户或角色不存在
- android - Android Firebase Crashlytics NDK 回溯缺少帧