国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

Ajax Session失效跳轉登錄頁面的方法

2024-09-01 08:27:56
字體:
來源:轉載
供稿:網友

在Struts應用中,我們發出的請求都會經過 相應的攔截器進行相關處理,一般都會有一個用戶登錄攔截(Session失效攔截);一般請求的話,如果Session失效時,我們會跳到登錄頁面,可是如果我們采用AJAX請求時,將會返回登錄頁面的HTML代碼,這肯定不是我們想要的,那么我們如何解決呢?請看以下步驟:

一、建立攔截器

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);@Overridepublic String intercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stubString 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 PROCESSresponse.setHeader("sessionstatus", ConstantsKey.MSG_TIME_OUT);result = null;} else {// NORMAL REQUEST PROCESSresult = 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請求結束處理方法

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

也就是ajax發送請求時如果攔截返回一個表示就跳轉,否則執行正常操作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沧市| 福海县| 龙山县| 楚雄市| 洪江市| 通道| 江门市| 太白县| 龙岩市| 突泉县| 满洲里市| 文化| 郎溪县| 万宁市| 百色市| 大竹县| 重庆市| 吉木乃县| 东阳市| 阿巴嘎旗| 黄大仙区| 曲阜市| 天津市| 天门市| 庆阳市| 清新县| 岗巴县| 玉田县| 根河市| 中方县| 阆中市| 都江堰市| 金沙县| 池州市| 长泰县| 天水市| 大同县| 罗平县| 元朗区| 区。| 安乡县|