最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

Ajax Session失效跳轉(zhuǎn)登錄頁面的方法

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:51:55
文檔

Ajax Session失效跳轉(zhuǎn)登錄頁面的方法

Ajax Session失效跳轉(zhuǎn)登錄頁面的方法:在Struts應(yīng)用中,我們發(fā)出的請(qǐng)求都會(huì)經(jīng)過 相應(yīng)的攔截器進(jìn)行相關(guān)處理,一般都會(huì)有一個(gè)用戶登錄攔截(Session失效攔截);一般請(qǐng)求的話,如果Session失效時(shí),我們會(huì)跳到登錄頁面,可是如果我們采用AJAX請(qǐng)求時(shí),將會(huì)返回登錄頁面的HTML代碼,這肯定不是我們想
推薦度:
導(dǎo)讀Ajax Session失效跳轉(zhuǎn)登錄頁面的方法:在Struts應(yīng)用中,我們發(fā)出的請(qǐng)求都會(huì)經(jīng)過 相應(yīng)的攔截器進(jìn)行相關(guān)處理,一般都會(huì)有一個(gè)用戶登錄攔截(Session失效攔截);一般請(qǐng)求的話,如果Session失效時(shí),我們會(huì)跳到登錄頁面,可是如果我們采用AJAX請(qǐng)求時(shí),將會(huì)返回登錄頁面的HTML代碼,這肯定不是我們想

在Struts應(yīng)用中,我們發(fā)出的請(qǐng)求都會(huì)經(jīng)過 相應(yīng)的攔截器進(jìn)行相關(guān)處理,一般都會(huì)有一個(gè)用戶登錄攔截(Session失效攔截);一般請(qǐng)求的話,如果Session失效時(shí),我們會(huì)跳到登錄頁面,可是如果我們采用AJAX請(qǐng)求時(shí),將會(huì)返回登錄頁面的HTML代碼,這肯定不是我們想要的,那么我們?nèi)绾谓鉀Q呢?請(qǐng)看以下步驟:

一、建立攔截器

package com.xxx.planeap.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.xxx.common.contants.ConstantsKey;
import com.xxx.common.contants.SessionKey;
import com.xxx.planeap.domain.User;
import com.xxx.planeap.security.SecurityContextUtil;
/**
* 
* @author Goma OMA1989@YEAH.NET
* @version v1.0
* @since 2012-05-31
* 
*/
public class SecurityInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
private Logger logger = Logger.getLogger(SecurityInterceptor.class);
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
String className = invocation.getAction().getClass().getName();
String action = className.substring(className.lastIndexOf(".")+1,className.length());
String actionName = invocation.getProxy().getActionName();
String result;
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
String type = request.getHeader("X-Requested-With");
User user = (User) ActionContext.getContext().getSession().get(SessionKey.CURRENT_USER);
if (user == null) {
logger.debug("SECURITY CHECKED: NEED TO LOGIN");
if ("XMLHttpRequest".equalsIgnoreCase(type)) {// AJAX REQUEST PROCESS
response.setHeader("sessionstatus", ConstantsKey.MSG_TIME_OUT);
result = null;
} else {// NORMAL REQUEST PROCESS
result = ActionSupport.LOGIN;
}
} else {
logger.debug("SECURITY CHECKED: USER HAS LOGINED");
SecurityContextUtil.setCurrentUser(user);
boolean hanPerm = SecurityContextUtil.hasPerm(action, actionName);
logger.debug("SECURITY CHECKED: PERMISSION---"+action+"."+actionName+"="+hanPerm);
result = invocation.invoke();
}
return result;
}
}

二、定義全局AJAX請(qǐng)求結(jié)束處理方法

//全局的AJAX訪問,處理AJAX清求時(shí)SESSION超時(shí)
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete:function(XMLHttpRequest,textStatus){
//通過XMLHttpRequest取得響應(yīng)頭,sessionstatus 
var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); 
if(sessionstatus=="timeout"){
//這里怎么處理在你,這里跳轉(zhuǎn)的登錄頁面
window.location.replace(PlanEap.getActionURI("login"));
}
}
});

也就是ajax發(fā)送請(qǐng)求時(shí)如果攔截返回一個(gè)表示就跳轉(zhuǎn),否則執(zhí)行正常操作。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Ajax Session失效跳轉(zhuǎn)登錄頁面的方法

Ajax Session失效跳轉(zhuǎn)登錄頁面的方法:在Struts應(yīng)用中,我們發(fā)出的請(qǐng)求都會(huì)經(jīng)過 相應(yīng)的攔截器進(jìn)行相關(guān)處理,一般都會(huì)有一個(gè)用戶登錄攔截(Session失效攔截);一般請(qǐng)求的話,如果Session失效時(shí),我們會(huì)跳到登錄頁面,可是如果我們采用AJAX請(qǐng)求時(shí),將會(huì)返回登錄頁面的HTML代碼,這肯定不是我們想
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top