在web.xml中
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>xxxxx.filters.LoginFilter</filter-class>
<init-param>
<param-name>indexPath</param-name>
<param-value>/welcome.htm</param-value>
</init-param>
<init-param>
<param-name>ignoreList</param-name>
<param-value></param-value>
</init-param>
</filter>
public class LoginFilter implements Filter {
private static final Logger log = LogManager.getLogger(LoginFilter.class);
private String indexPath;
List<String> ignoreList = new ArrayList<String>();
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
String uri = req.getRequestURI();
if(log.isDebugEnabled()) {
log.debug(uri);
}
if (req.getSession().getAttribute(AbstractController.SESSION_LOGIN_INFO) != null || isIgnored(uri)) {
chain.doFilter(req, res);
} else {
String referer = req.getHeader("referer");
if(referer==null)
referer = "";
log.warn(String.format("Not yet authenticated, The request uri is [%s]. referer is [%s].",
uri, referer));
res.sendRedirect(req.getContextPath() + indexPath);
}
}
public void init(FilterConfig config) throws ServletException {
indexPath = config.getInitParameter("indexPath");
String strIgnoreList = config.getInitParameter("ignoreList");
if(strIgnoreList!=null && strIgnoreList.length()>0) {
ignoreList = Arrays.asList(strIgnoreList.split(","));
} else {
ignoreList = new ArrayList<String>();
}
}
private boolean isIgnored(String uri) {
for (String ignore : ignoreList) {
if (StringUtils.contains(uri, ignore)) {
return true;
}
}
return false;
}
}