[英]Laravel 5.6 Auth::check() return false if called with fetch
我想檢查用戶是否通過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);
});
我的方法有什么問題?
也許是因為您沒有指定應該包含憑據,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]);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.