@Log4j2
public class AuthFilter extends UserFilter {
/**
* 判断用户没有登录的时候发出需要权限的请求会跳转到这个方法
*
* @param request
* @param response
* @throws IOException
*/
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
//判断是否是ajax请求
String header = servletRequest.getHeader("X-Requested-With");
if (header != null && "XMLHttpRequest".equals(header)) {
log.info("-------------------这是一个ajax请求-----------------");
//判断是否登录
boolean authenticated = SecurityUtils.getSubject().isAuthenticated();
if (!authenticated) {
//这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交,给出的内容类型可以包括字符编码说明。
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print(JSONUtil.toJsonStr(Result.fail("请先登录!")));
}
} else {
//web请求重定向到登录页面
super.redirectToLogin(request,response);
}
}
}
shiro自定义拦截器判断是否是ajax请求
最新推荐文章于 2021-08-05 15:18:40 发布