php - 使用 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."}
请查看附件图片以获得更清晰的信息,并请帮助我解决我的问题。
提前致谢
解决方案
您必须Authorization
在您的 ajax 设置以及刀片文件中发送标头。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Authorization': 'Bearer {{ $your_bearer_token }}'
}
});
推荐阅读
- cassandra - Cassandra CommitLog 目录忘记删除文件
- spotfire - 如何在spotfire中按月汇总表中的数据
- algorithm - 如果我的目的地无法到达,如何到达最近的可到达点?
- shell - “管道标准错误,而不是标准输出”在 Zsh 中不起作用
- javascript - 尝试使用 {object}.#text location 从 JavaScript .json 对象访问数据
- sql-server - 函数中包含的最后一条语句必须是 return 语句
- c# - WPF - 字体真棒图标未在运行时显示
- python - python:使用etree保留xml格式
- python - AttributeError:“str”对象没有属性“errno”
- html - 使文本和复选框并排