第一:在后台登录逻辑中判断是否是ajax请求,并设置特定的返回数据;
判断请求头中是否含有X-Requested-With并等于XMLHttpRequest,如果为true,则证明是ajax请求
if(request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").equals("XMLHttpRequest")){
//判断请求头中是否含有X-Requested-With并等于XMLHttpRequest,如果为true,则证明是ajax请求
response.setHeader("SessionStatus", "sessionTimeOut");//设置session状态
response.setStatus(401);//设置返回状态码
return false;
}else {
logger.info("重定向到登录页面");
//重定向到登录页面,具体代码省略。。。
return super.onAccessDenied(request, response);
}
下图可以看到ajax请求的请求头:
第二:前端进行判断并给出提示;
设置全局的ajaxError,这样不用对每个ajax请求都去判断验证;
$(document).ajaxError(function (event, jqXHR, options, errorMsg) {
var sessionStatus = jqXHR.getResponseHeader('SessionStatus');
if (sessionStatus && sessionStatus === 'sessionTimeOut') {
alert("您的会话已过期,请重新登录");
}
});