• 如果我们在拦截器中定义了拦截器的路径为/user/*这个地址,并且拦截器拦截器之后,如果没有登录,那么重定向到登录界面。但是我们在未登录的前提下使用Ajax异步请求了/user/addUser.do这个地址,出现了拦截器是拦截了,但是并没有重定向到登录界面。
String requestUrl = request.getRequestURI();
Object admin = request.getSession().getAttribute("admin");
if(admin == null) {
//表示未登录或登录失效
System.out.println("拦截:"+requestUrl+"请求");
String header = request.getHeader("X-Requested-With");
//判断是否为ajax请求
if ("XMLHttpRequest".equals(header)) {
//是ajax请求
Map<String, String> ret = new HashMap<String, String>();
ret.put("type", "error");
ret.put("msg", "登录超时或为未登录,请重新登陆");
response.getWriter().write(JSONObject.fromObject(ret).toString());
return false;
}
//普通链接跳转,直接重定向
response.sendRedirect(request.getServletContext().getContextPath()+"/system/login");
return false;
}
return true;
}