Ajax会话失效如何跳转登录页面

  介绍

小编给大家分享一下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会话失效如何跳转登录页面的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

Ajax会话失效如何跳转登录页面