當前位置:
首頁 > 最新 > 單點登錄Session超時,Ajax請求不能正常跳轉到登錄界面

單點登錄Session超時,Ajax請求不能正常跳轉到登錄界面

場景描述

前端:nui+jQuery

nui是前端mini jquery ui的別名,除了增加數據字典的組件,其他均一樣;

後端:EOS

EOS是普元信息技術股份有限公司的快捷開發平台的產品;

現有企業內部管理系統,前後端的交互,80%均採用ajax來實現的。

這種模式的優勢在於:

減少前後端不必要的交互(全部刷新)

減輕伺服器端的壓力(合理使用客戶端機器的資源)。

有利必有弊,弊端:

部分刷新,session超時後,後端攔截到ajax的請求,會redirect到登錄界面,但是Ajax的核心功能並非處理跳轉。

解決方案:

分兩步進行解決

在攔截器中區別Ajax請求和正常的http請求。

jQuery中的全局方法進行統一處理(每個ajax增加,工作量太大)。

第一步:區別ajax

如圖,ajax請求中,

包含X-Requested-With的請求頭,

而且其value固定為XMLHttpRequest

偽代碼如下:

if(session==null){

//ajax請求的

if(X-Requested-With.equals("XMLHttpRequest")){

返回跳轉到登錄頁面的標識

}else{//其他

直接跳轉到登錄頁面

}

}

第二步:jquery的全局方法

$(document).ajaxComplete(function (evt, request, settings) {

var text = request.responseText;

//獲取第一步返回的跳轉到登錄頁面的標識

if (text == "logout") {

top.location = "/login.html";

//如果使用了iframe,需要設置其父frame的鏈接為登錄頁面

}

})

必須要放在統一的入口,才能避免每個ajax請求增加該方法。

我是單獨寫了一個js文件,然後在統一應用的nui.js中增加這個js的引用。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 元頁石 的精彩文章:

TAG:元頁石 |