牛骨文教育服务平台(让学习变的简单)
博文笔记

springmvc session丢失 重新登录

创建时间:2017-05-26 投稿人: 浏览次数:470

参考

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);

            }   

    }   
 }); 
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。