国产探花免费观看_亚洲丰满少妇自慰呻吟_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發送請求時如果攔截返回一個表示就跳轉,否則執行正常操作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亳州市| 伊吾县| 桐乡市| 五莲县| 仁寿县| 诸暨市| 建德市| 武义县| 安西县| 绩溪县| 周口市| 秭归县| 平和县| 古浪县| 昆山市| 灵川县| 邳州市| 盈江县| 什邡市| 汝阳县| 洪洞县| 芦山县| 疏附县| 营山县| 南开区| 宜春市| 上犹县| 茌平县| 宜章县| 信宜市| 道孚县| 崇义县| 宝鸡市| 孙吴县| 湖北省| 贺州市| 宁河县| 武平县| 东至县| 襄垣县| 定南县|