介绍
小编给大家分享一下Ajax会话失效如何跳转登录页面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
在Struts应用中,我们发出的请求都会经过相应的拦截器进行相关处理,一般都会有一个用户登录拦截(会话失效拦截);一般请求的话,如果会话失效时,我们会跳到登录页面,可是如果我们采用Ajax请求时,将会返回登录页面的HTML代码,这肯定不是我们想要的,那么我们如何解决呢?请看以下步骤:
<强> 强>
包com.xxx.planeap.interceptor; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 进口org.apache.log4j.Logger; 进口org.apache.struts2.ServletActionContext; 进口com.opensymphony.xwork2.ActionContext; 进口com.opensymphony.xwork2.ActionInvocation; 进口com.opensymphony.xwork2.ActionSupport; 进口com.opensymphony.xwork2.interceptor.AbstractInterceptor; 进口com.xxx.common.contants.ConstantsKey; 进口com.xxx.common.contants.SessionKey; 进口com.xxx.planeap.domain.User; 进口com.xxx.planeap.security.SecurityContextUtil;/* * * * @author戈马OMA1989@YEAH.NET * @version v1.0 * @since 2012-05-31 * */公开课SecurityInterceptor延伸AbstractInterceptor { 私有静态最终长serialVersionUID l=1; 私人日志记录器=Logger.getLogger (SecurityInterceptor.class); @Override 公共字符串拦截(ActionInvocation调用){抛出异常//TODO自动生成方法存根 字符串className=invocation.getAction () .getClass () . getname (); 字符串action=className.substring (className.lastIndexOf (“!”) + 1, className.length ()); .getActionName字符串actionName=invocation.getProxy () (); 字符串的结果; HttpServletRequest请求=ServletActionContext.getRequest (); HttpServletResponse响应=ServletActionContext.getResponse (); 字符串类型=request.getHeader (“X-Requested-With"); 用户用户=(用户)ActionContext.getContext () .getSession () . get (SessionKey.CURRENT_USER); 如果(用户==null) { logger.debug(“安全检查:需要LOGIN"); 如果“XMLHttpRequest" .equalsIgnoreCase(类型)){//AJAX请求的过程 response.setHeader (“sessionstatus" ConstantsKey.MSG_TIME_OUT); 结果=零; }{//正常请求过程 结果=ActionSupport.LOGIN; } 其他}{ logger.debug(“安全检查:用户LOGINED"); SecurityContextUtil.setCurrentUser(用户); 布尔hanPerm=SecurityContextUtil。hasPerm(行动,actionName); logger.debug(“安全检查:许可——产生绯闻;+行动+“干净+ actionName +“=? hanPerm); 结果=invocation.invoke (); } 返回结果; } }
//全局的AJAX访问,处理AJAX清求时会话超时 美元.ajaxSetup ({ contentType:“应用程序/x-www-form-urlencoded; charset=utf-8" 完成:函数(XMLHttpRequest, textStatus) {//通过XMLHttpRequest取得响应头,sessionstatus var sessionstatus=XMLHttpRequest.getResponseHeader (“sessionstatus"); 如果(sessionstatus==皌imeout") {//这里怎么处理在你,这里跳转的登录页面 window.location.replace (PlanEap.getActionURI (“login")); } } });
也就是ajax发送请求时如果拦截返回一个表示就跳转,否则执行正常操作。
以上是ajax会话失效如何跳转登录页面的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!