登录过期时,拦截器拦截到ajax请求无法跳转到登录页面处理方案

本文介绍了一种在后台拦截器中使用自定义707状态码处理未登录状态的方法,通过session检查实现对普通请求和AJAX请求的差异化响应,并详细解释了如何在jQuery中设置全局AJAX请求来捕获此状态码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.  后台拦截器处理

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {


        //session拦截
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8")


            Object  user = request.getSession().getAttribute("user");
            if(user != null) {  
                return true;  
            }else{
                // 未登录
                if (INDEX_PATH.equals(requestUrl)||INDEX_PATH_DEFAULT.equals(requestUrl)) {
                    response.sendRedirect(request.getContextPath() + "/login");
                } else {
                    if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ 
                        //如果是ajax请求响应头会有x-requested-with,自定义707状态码为ajax登录过期
                        response.setStatus(707);
                        PrintWriter out = response.getWriter();  
                        out.print(request.getContextPath() + "/overtime");
                        out.flush();
                    }else {
                        response.sendRedirect(request.getContextPath() + "/overtime");
                    }
                return false;

                }

}

二.  使用 jQuery.ajaxSetup() 方法设置全局 AJAX请求response状态码为自定义的707时,执行以下方法,不执行原本的success function()   。

在个页面都引用的jQuery.js末端加以下代码
jQuery.ajaxSetup({
    statusCode:{
            707:function(data){
                window.parent.location.href=data.responseText;
            }
        }
    })


        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值