`

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失效的情况下处理请求并跳转到登录页面。本文主要针对该问题提供了详细的解决方案,并以Struts2框架为例,讲解了如何通过拦截器来实现这一功能...

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

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

    ext session失效 页面跳转

    当Session失效时,通常会导致用户被重定向到登录页面,以便重新验证其身份。下面将详细讨论EXT Session失效以及如何实现页面跳转至登录页。 首先,EXT是一个JavaScript库,用于构建交互式的、数据驱动的Web应用。它...

    重写 ajax 实现 session 超时跳转到登录页面实例代码

    后端过滤器负责检测并处理Session超时,前端通过监听Ajax错误事件,捕获302状态码并模拟页面跳转,确保无论用户是通过常规链接还是Ajax请求,一旦Session超时都能被正确引导到登录页面。这种做法不仅维护了用户操作...

    Ajax请求session失效该如何解决

    然而,当Session失效时,用户应该被重新定向到登录页面以重新验证身份。对于常规HTTP请求,我们可以轻松通过登录过滤器来处理这个问题。但针对Ajax请求,由于其异步性质,处理Session失效的方式略有不同。 标题和...

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

    如果其值为`timeout`,则提示用户重新登录,并重定向到登录页面。使用jQuery,可以这样设置全局Ajax配置: ```javascript // 设置Ajax请求的全局默认options jQuery.ajaxSetup({ type: 'post', complete: ...

    Session过期后自动跳转到登录页面的实例代码

    在本文中,我们将探讨如何在Session过期后自动将用户重定向到登录页面。 首先,开发者可能尝试使用Session监听器(HttpSessionListener)来检测Session的过期。监听器是Java Servlet规范的一部分,允许我们注册监听...

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

    【在线人员ajax聊天室】是一种实时通信技术的实现,它基于JavaScript的Ajax(异步JavaScript和XML)技术,使得用户无需刷新页面就能实时更新聊天内容,提供流畅的用户体验。Ajax的核心在于通过XMLHttpRequest对象与...

    ajax请求Session失效问题

    // 跳转到登录页面 } else { // 处理正常情况... } }, error: function(xhr, status, error) { // 处理网络错误... } }); ``` 这样,我们就成功地解决了AJAX请求Session失效的问题,既保持了用户体验的连贯...

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

    文章中提供的代码示例展示了如何在全局范围内重写jQuery的ajax方法,增加对session状态的检查,并在检测到session失效时进行特定的处理。这里使用的jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件...

    详解.net mvc session失效问题

    当Session失效时,我们可以自定义AuthorizeAttribute的子类,如`AuthorizeOfHandleUnAuthorizeAttribute`,并在`HandleUnauthorizedRequest`方法中处理重定向到登录页面的操作。 ```csharp public class ...

    ajax提交session超时跳转页面使用全局的方法来处理

    本文将详细介绍如何使用全局方法来处理AJAX提交时的Session超时,并跳转到特定页面。 首先,我们可以在服务器端设置一个过滤器(Filter)来检测Session的状态。在Java Web开发中,过滤器可以拦截每个HTTP请求,包括...

    extjs session失效解决方案

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

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

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

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

    在PHP中,Session是一种非常重要的会话管理机制,它允许开发者在用户的不同页面请求之间保持状态。本篇文章将深入探讨如何在PHP中设置Session,包括过期、失效以及有效期的管理。 首先,让我们关注`session.save_...

Global site tag (gtag.js) - Google Analytics