我想检查用户是否通过JavaScript fetch()
函数登录。但它总是返回false,但如果我直接在地址栏中调用URL,它会返回true,因为它应该是。这是代码:
/routes/web.php
Route::get('check-login', function () {
if (Auth::check()) {
return response()->json(['isLogin'=>'ok']);
} else {
return response()->json(['isLogin'=>'no']);
}
});
的javascript:
fetch('/check-login', {
headers:{
'Accept': 'application/json'
}
})
.then(response => {
return response.json();
})
.then(result => {
console.log(result);
});
我的方法有什么问题?
答案 0 :(得分:2)
也许是因为您没有指定应包含凭据,Fetch Api默认情况下不使用Cookie。所以也许这样可行:
fetch('/check-login', {
headers:{
'Accept': 'application/json'
},
credentials: 'same-origin'
})
.then(response => {
return response.json();
})
.then(result => {
console.log(result);
});
答案 1 :(得分:1)
我不知道您的javascript代码是对还是错,但routes \ web.php必须是
textView.setText(uri.toString());
此代码等效(更易读)
Route::get('check-login', function () {
if (Auth::check()) {
return response()->json(['isLogin'=>'ok']);
} else {
return response()->json(['isLogin'=>'no']);
}
});
或者您可以使用三元运算符
Route::get('check-login', function () {
if (Auth::check()) {
return response()->json(['isLogin'=>'ok']);
}
return response()->json(['isLogin'=>'no']);
});