后台系统定时检查session的状态,当session失效的时候,自动跳转到登录页

这个需求比较常见,一般做法是在公共的引用文件中加入js定时器,定时检查session的状态。

公共文件一般是一些js,css文件,以及一些自己封装的js函数库等。
如在公共文件include_common.jsp文件中加入如下代码:

<!-- 每分钟检查session的状态,当session过期的时候,跳到登录页面 -->
<script type="text/javascript">
    var sessionCheck = setInterval(function(){
        // 获取session 状态
        $.ajax({
            url:'<%=path%>/getCurrentUser',
            type:'post',
            dataType:'json',
            success:function(data){
                if(data.result=='-1'){
                    console.log("session已过期");
                    location.href="<%=path%>/";
                }else{
                    console.log("session未过期");
                }
            },
            error:function(data){
                console.log("session已过期");
                location.href="<%=path%>/";
            }
        });
    },1000*60);

    function clear(){
        clearInterval(sessionCheck);
    }
</script>

// 获取当前session用户
    public void getCurrentUser(){
        String orgCode = getSessionAttr("orgCode");
        Map<String,Object> map = new HashMap<String,Object>();
        if(StrKit.notBlank(orgCode)){
            map.put("result", "0");
        }else{
            map.put("result", "-1");
        }
        renderJson(JsonKit.toJson(map));
    }

其中sessionCheck是全局变量,并编写清除定时检查的函数clear。
项目中的页面都引用了include_common.jsp文件,包括login.jsp文件。
但是如果session失效的话,跳转到了login.jsp页面,而login.jsp页面也引用了include_common.jsp页面,同样会执行定时session检查,所以在login.jsp页面要调用下clear()函数,清除该检查。

猜你喜欢

转载自blog.csdn.net/huangbaokang/article/details/80004237