首页 > 解决方案 > 使用 Laravel 身份验证和 Ajax 将数据发送到数据库表时获取未经身份验证的消息

问题描述

我使用 Laravel 5.8 API Authentication (Passport) 创建了一个 API,通过邮递员获取生成的令牌保存数据,它可以工作。但是当我将它发送到 ajax 时,它会给出一条消息

({消息:“未经身份验证。”})

我的路线是

Route::group(['middleware' => 'auth:api'], function(){
    Route::resource('r-camera', 'API\RearcamerasController');

});
````````

````````
My ajax code is 
<script>
    $(document).ready(function(){
$('#btn-add').click(function(e){
   e.preventDefault();
   /*Ajax Request Header setup*/
   $.ajaxSetup({
      headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
  });


   $('#btn-add').html('Sending..');

   /* Submit form data using ajax*/
   $.ajax({
      url: "http://localhost:8000/api/r-camera",
      method: 'post',
      data: $('#frmAddTask').serialize(),
      success: function(response){
         //------------------------
            $('#btn-add').html('Submit');
            $('#res_message').show();
            $('#res_message').html(response.msg);
            $('#msg_div').removeClass('d-none');

            document.getElementById("frmAddTask").reset(); 
            setTimeout(function(){
            $('#res_message').hide();
            $('#msg_div').hide();
            },10000);
         //--------------------------
      }});
   });
});
</script>

在邮递员上运行 API 使用这个令牌并运行

授权

在此处输入图像描述 Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImMzZjQ5ZTA1MzdmMWQxYzI5YjBhNzQ5N2EyZjhiMDVjYjliYzAyMTQ3OWMxMWVkZjEzNDIyNjE1Y2RjNDZmNDVmZjE3MzNmMjZiN2E5MTQxIn0.eyJhdWQiOiIzIiwianRpIjoiYzNmNDllMDUzN2YxZDFjMjliMGE3NDk3YTJmOGIwNWNiOWJjMDIxNDc5YzExZWRmMTM0MjI2MTVjZGM0NmY0NWZmMTczM2YyNmI3YTkxNDEiLCJpYXQiOjE1Nzk4NDgxMjIsIm5iZiI6MTU3OTg0ODEyMiwiZXhwIjoxNjExNDcwNTIyLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.DS3-YniGiLIr3lTm08DJSd8fdITwYHqW22J9CjjoRFhGAZ4mXpCwb6U1UbJw8yKAQONC93Sj1OxUisg-QfrJ7vUUzFPMCoDDTbS-Hgu5CeRZrLFprYLzm1Eu0WLV9VRAbeQ0P8hPa5tzhbn4oVJ3KMHipjvw3UKse-Noe50LZuktIDZ0KeA1v3PhaaMTCmfXy7S0VXFMSngQbkDVQUWLt8EwcEAGeRGwpvtYz9FzhgSSF5yTz48EvpbqncgLyUo7a0TnbwPYzYR__cyXLeF6FmrrWfaEUD0pkPwZRtalF0bMXPrH-0AKmXJSPQYJxC5SySxf5a5QEVqhzwOlHPTl7iLZkVI9NWMipTmoaf5cSNI4k7gkN8yvYzHbY3C78zFSlEc9zTE9FGX9u4UIIgCEnFAIMwLI20jaUyopFkRMpo5qeU3krZQnLfHaeS5K5MnFEfNarUp4CNvGf-aITxl07KFOSjWk0s5qA9llJCYh7NpdOY2IA1Wq8XxR2qDW7ZwNFmoF83vBxKMjhGEbJokuKJNCmoO591MuOBgzJZt8SJdwn2abrQ96AEL4rJ8HC6pFlMbaHFydwlirwE3NCzIQDsRYr0CjLbvfzGQ4axdq5I-IAo-bcUh2KinuA1XqKEerCrUCNj6oaGKFOAt1VoqZBoRTyLEp8amh7YwG43v_mTEUCNj6oaGKFOAt1VoqZBoRTyLEp8amh7YwG43v_mTEUCNj6oaGKFOAt1VoqZBoRTyLEp8amh7YwG43v_mTE

但是当我从仪表板通过 ajax 发布请求时 {message: "Unauthenticated."}

请查看附件图片以获得更清晰的信息,并请帮助我解决我的问题。

提前致谢

标签: phplaravel

解决方案


您必须Authorization在您的 ajax 设置以及刀片文件中发送标头。

 $.ajaxSetup({
      headers: {
          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
          'Authorization': 'Bearer {{ $your_bearer_token }}'
      }
  });

推荐阅读