1. 程式人生 > >實現在session過期,呼叫ajax時候自動跳登陸頁面。

實現在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中進行判斷。