`

ajax Session失效如何跳转到登录页面

阅读更多
一、建立拦截器

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;

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 Session失效跳转登录页面的方法

    主要介绍了Ajax Session失效跳转登录页面的方法,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧

    完美解决ajax访问遇到Session失效的问题

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:<html>[removed]window.open(‘http://192.168.0.118:8080/welcomeAction/loginUI.do’,’_top’);...

    Ajax请求session失效该如何解决

    HTML + Servlet + Filter + jQuery 一般来说我们的项目都有登录过滤器,一般请求足以搞定。但是AJAX却是例外的,所以解决方法是设置响应为session失效。

    使用Ajax时处理用户session失效问题的解决方法

    在使用spingMVC的拦截器来处理用户session失效的问题时,当用户session失效会返回一串javascript字符串强制用户浏览器跳转至登录页面。然而当使用Ajax请求数据时,在验证失败后只会响应一串字符串,JavaScript并不会...

    ajax请求Session失效问题

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html: <html> [removed]window.open('http://192.168.0.118:8080/welcomeAction/loginUI.do','_top'); ...

    在线人员 ajax聊天室 关闭浏览器和登出控制使session失效

    在线人员 ajax聊天室 关闭浏览器和登出控制使session失效 功能基本完成。 可以查看我的博客。 直接下载即可运行。

    详解.net mvc session失效问题

    最近在研究有关.net mvc项目中的session失效问题,下面小编把研究过程给大家共享下,大家可以参考下。 最近解决基于.net mvc项目的session失效问题,这个跟大家聊聊。 1.问题分析 .net mvc中,Session失效需要考虑...

    extjs session失效解决方案

    使用filter来做后台,Ext.Ajax.on('requestcomplete', checkUserSessionStatus, this);用requestcomplete这个方法来异步判断session是否已经失效了

    ajax 操作全局监测,用户session失效的解决方法

    下面小编就为大家带来一篇ajax 操作全局监测,用户session失效的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    iframe跨域与session失效问题的解决办法

    何为跨域跨域session/cookie? 也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的...

    详解php设置session(过期、失效、有效期)

    在php中设置session有很多方面包有给session设置值或直接设置过期、失效和有效期,下面小编来给大家给各位朋友介绍怎么使用。 我们先来看看在php.ini中session怎么设置,打开 php.ini,查找Session设置部分中以下一...

    express如何解决ajax跨域访问session失效问题详解

    主要给大家介绍了关于express如何解决ajax跨域访问session失效问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    SSH & Ajax & MD5技术资料

    ajax校验、FCK文本编辑器、jfreechart、jxl导入、log4j、md5密码加密、poi报表、session失效自动跳转到登录页面、vilidate验证、二级缓存、分页、进度条、权限配置文件(dom4j)、验证码+记住我

Global site tag (gtag.js) - Google Analytics