登录拦截器

@WebFilter(urlPatterns = "/*", filterName = "loginFilter")
public class LoginFilter implements Filter {

private static final Logger logger = LoggerFactory.getLogger(LoginFilter.class);
private static final String[] NOT_CHECH_URL = {"/login","/json",".js",".css",".ico",".jpg",".png","/scriptJob/executedScheduleTask","/createReport/ReportSchedule"};
// private static final String[] NOT_CHECH_URL ={""};
/**
* 是否只允许Post
*/
private boolean postOnly = true;

/**
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)

/**
*
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException,ServletException {
// chain.doFilter(request,response);
/*if (postOnly && !"POST".equals(((HttpServletRequest)request).getMethod())) {
throw new IOException ("不支持以Post以外的方式登录");
}*/
((HttpServletResponse)response).setHeader("SET-COOKIE", "JSESSIONID=" + ((HttpServletRequest)request).getSession().getId() + ";Secure;HttpOnly");

String uri = ((HttpServletRequest)request).getRequestURI();
if(notCheckUri(uri)){
chain.doFilter(request, response);
return ;
}
HttpSession session = ((HttpServletRequest)request).getSession();
String contextPath = ((HttpServletRequest) request).getContextPath();
if(session == null || session.getAttribute("username") == null) {
((HttpServletResponse)response).sendRedirect(contextPath+"/autocreatecase/login");
return;
}
else {
//合法的请求,放行
chain.doFilter(request, response);
return;
}
}

private boolean notCheckUri(String uri) {
boolean flag = false;
for(String str : NOT_CHECH_URL){
flag = uri.contains(str);
if (flag){
return true;
}

}
return flag ;
}


@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub

}


@Override
public void destroy() {
// TODO Auto-generated method stub

}
}
原文地址:https://www.cnblogs.com/chexiedaping/p/12204709.html