springmvc session丢失 重新登录

本文介绍了一种基于Ajax请求的会话超时处理方案。当用户会话超时时,后端通过设置HTTP响应头来通知前端。前端利用jQuery监听所有Ajax请求,在请求完成后检查特定的响应头,实现自动跳转至登录页面。
摘要由CSDN通过智能技术生成

参考

http://zhengjunxiang.iteye.com/blog/1990689

具体做法

由于本人目前开发的项目,几乎所有的页面显示都是基于ajax请求,所以,不让系统变复杂,取一个简单方式来实现。


  1. 后台

权限拦截器检查session为空的时候,添加reponse头,用来作为标记
 //2.拦截未登录操作
        HttpSession session = request.getSession();
        User user=UserSessionUtil.getCurrentUser(session);
        if(user==null){
            response.setHeader("sessionstatus", "timeout");
            //throw n``ew SessionNullException("用户未登录");
            return false;
        }


  1. 前台

全局范围内,每次ajax请求结束,都会进行读取请求头,判断是否有用户session为空的情况
/**
 * session 丢失,重定向到登录页面,具体过程:
 *      权限拦截器rightIngerceptor拦截到用户session丢失,就会在reponse头添加一个sessionstatus:timeout,
 *      每次ajax请求后都会执行以下函数,从而实现sesion丢失后重定向问题
 */
$.ajaxSetup({   
    contentType:"application/x-www-form-urlencoded;charset=utf-8",   
    complete:function(XMLHttpRequest,textStatus){
            console.log("sesssion");
            var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,  
            if(sessionstatus=="timeout"){   
                        warn_dialog("登录时间过长,请重新登录!","small-dialog");
                        //如果超时就处理 ,指定要跳转的页面  
                        setTimeout(function(){
                            window.location.replace("${ContextPath}/welcome/toHomePage"); 
                        },2000);

            }   

    }   
 }); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值