我想检查用户是否通过JavaScriptfetch()
函数登录。但它总是返回 false,但是如果我直接在地址栏中调用 URL,它会按预期返回 true。这是代码:
/路线/网络.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);
});
我的方法有什么问题?
也许是因为您没有指定应包含凭据,Fetch API 默认情况下不使用 cookie。所以也许像这样它会起作用:
fetch('/check-login', {
headers:{
'Accept': 'application/json'
},
credentials: 'same-origin'
})
.then(response => {
return response.json();
})
.then(result => {
console.log(result);
});
我不知道你的javascript代码对错,但routes\web.php必须是
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']);
});
或者你可以使用三元运算符
Route::get('check-login', function () {
$isLogin = Auth::check() ? 'ok' : 'no';
return response()->json(['isLogin'=> $isLogin]);
});