實現在session過期,呼叫ajax時候自動跳登陸頁面。
前兩天在專案中發現,在session過期以後,只有重新整理頁面才會跳到登陸頁面,如果在當前介面發起ajax請求卻是不會跳轉,於是一步一步去檢視問題是出在哪裡。
登陸判斷是寫在base類,每個控制器都會繼承base,於是我看看,在他請求ajax不跳轉,是走到哪裡了,有沒有進base。後來經過測試,是經過了base,那個登陸頁面也請求到了。但是沒有跳轉過去。
後來百度,找到了解決問題辦法。
我先貼後端程式碼,這個寫在基類裡面
function checkSession()
{
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
//is ajax
if(empty(session('id'))){
echo '{"code":302,"msg": " ","redirectUrl":"/../index/login/index"}';
exit;
}
}
elseif(empty(session('id'))){
echo "<script>";
// echo "alert('使用者過期,請重新登陸!');";
echo "parent.window.parent.window.location.href = '/../index/login/index';";
echo "</script>";
}
}
然後貼前端程式碼,在ajax請求到code為302的,直接重定向到登陸頁面。在ajax success請求到的data中進行判斷。