主页 > 知识库 > Ajax Session失效跳转登录页面的方法

Ajax Session失效跳转登录页面的方法

热门标签:ai机器人电销资源 超级大富翁地图标注 云呼外拨网络电话系统 机器人电销骗局揭秘 地图标注项目怎么样 硅语电话机器人公司 个人怎样在百度地图标注地名 腾讯地图标注位置能用多久 越南河内地图标注

在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);
@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请求结束处理方法

//全局的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发送请求时如果拦截返回一个表示就跳转,否则执行正常操作。

您可能感兴趣的文章:
  • Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】
  • 详解springmvc控制登录用户session失效后跳转登录页面
  • php页面跳转session cookie丢失导致不能登录等问题的解决方法
  • webix+springmvc session超时跳转登录页面
  • jQuery ajax全局函数处理session过期后的ajax跳转问题
  • ajax提交session超时跳转页面使用全局的方法来处理
  • Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法
  • Session过期后自动跳转到登录页面的实例代码
  • Session过期后实现自动跳转登录页面

标签:辽源 郑州 海南 舟山 洛阳 内蒙古 邢台 林芝

巨人网络通讯声明:本文标题《Ajax Session失效跳转登录页面的方法》,本文关键词  Ajax,Session,失效,跳转,登录,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Ajax Session失效跳转登录页面的方法》相关的同类信息!
  • 本页收集关于Ajax Session失效跳转登录页面的方法的相关信息资讯供网民参考!
  • 推荐文章