- Shiro 教程,Ajax请求拦截跳转页面方案
在登录拦截器中,如我们自己定义的LoginFilter 中,先行判断下,是否为 Ajax 请求,如果是 Ajax 请求并且没有相关权限,采用Response 输出一段 JSON 数据返回即可。
- 判断请求是否为Ajax请求
/**
* 是否是Ajax请求
* @param request
* @return
*/
public static boolean isAjax(ServletRequest request){
String header = ((HttpServletRequest) request).getHeader("X-Requested-With");
if("XMLHttpRequest".equalsIgnoreCase(header)){
LoggerUtils.debug(CLAZZ, "当前请求为Ajax请求");
return Boolean.TRUE;
}
LoggerUtils.debug(CLAZZ, "当前请求非Ajax请求");
return Boolean.FALSE;
}
- Response 输出JSON数据
/**
* 使用 response 输出JSON
* @param hresponse
* @param resultMap
* @throws IOException
*/
public static void out(ServletResponse response, Map<String, String> resultMap){
PrintWriter out = null;
try {
response.s