通过 AJAX 数据表调用 Laravel API 时出现 401 未授权错误

时间:2021-03-30 08:30:35

标签: javascript ajax laravel http datatable

我在 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': '&nbsp;',
                    '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>

0 个答案:

没有答案