登录失效后ajax访问后台问题解决

由于后台加入了权限管理,登录失效后访问后台会发生重定向,而ajax访问的无法跳转到登录页面。

1.通过在权限管理器中加入判断是否是ajax访问来区分两种请求。

//ajax请求方式会获取到 XMLHttpRequest ,其他请求方式没有这个请求头
String requestType = request.getHeader("X-Requested-With");
if(StringUtil.isNotEmpty(requestType) && "XMLHttpRequest".equals(requestType)) {
    String jsonStr = "{\"code\":\"not_login\",\"msg\":\"没有登录\"}";
    UtilUrl.setJsonResponse(response, jsonStr);
}else {
	request.setAttribute("referer", url);
    request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
}
/**
* 设置json返回数据
 * @param request
 * @return
 */
public static void setJsonResponse(HttpServletResponse response, String jsonStr){
    response.setCharacterEncoding("UTF-8");  
    response.setContentType("application/json; charset=utf-8");  
    PrintWriter out = null; 
    try {  
        out = response.getWriter();  
        out.append(jsonStr);  
    } catch (Exception e) {  
        log.error("设置json返回数据失败:"+e.getMessage());
    } finally {  
        if (out != null) {  
            out.close();  
        }  
    }
}

2.修改jquery ajax源码 当获取到返回参数是json格式,并且code值为not_login的时候自动刷新页面,刷新页面后是否执行登录操作由后台处理。

//权限拦截自动跳转
if(status == 200){
	try{
		var obj = eval('(' + responses.text + ')');
		if(obj.code=='not_login'){
			window.location.reload();
			return false;
		}
	}catch(e){
		
	}
}

或者在jquery.js文件最后添加ajax回调函数

//ajax完成时回调函数
$(document).ajaxComplete(function(event, xhr, settings) {
	if(xhr.responseJSON && xhr.responseJSON.code == "998"){
		window.location.reload();
	}
});

jquery代码添加位置 (以jquery 2.1.4为例) 第8210行 if 判断内
// Get response data
if ( responses ) {
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值