Skip to content

Instantly share code, notes, and snippets.

@hengyunabc
Created June 11, 2015 03:40
Show Gist options
  • Save hengyunabc/cfea026f69c6352986ab to your computer and use it in GitHub Desktop.
Save hengyunabc/cfea026f69c6352986ab to your computer and use it in GitHub Desktop.
SignInFilter
<filter>
<filter-name>signInFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>signInFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
package io.github.xdiamond.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
/**
* 可以配置pathsToBeIgnored 参数,跳过验证的路径。多个路径以","分隔。
* 如"/resources,/signin"。
* @author hengyunabc
*
*/
@Service
public class SignInFilter implements Filter {
String[] ignoredPathsArray = { "/resources", "/signin" };
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String paths = filterConfig.getInitParameter("pathsToBeIgnored");
if (paths != null) {
String[] split = StringUtils.split(paths, ',');
if (split != null) {
ignoredPathsArray = split;
}
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String contextPath = httpServletRequest.getContextPath();
String requestURI = httpServletRequest.getRequestURI();
// 跳过/resources, /signin 的路径
for (String path : ignoredPathsArray) {
if (requestURI.startsWith(contextPath + path)) {
chain.doFilter(request, response);
return;
}
}
HttpSession session = httpServletRequest.getSession();
Object attribute = session.getAttribute("signInUser");
if (attribute != null) {
chain.doFilter(request, response);
return;
}
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect(contextPath + "/signin");
}
@Override
public void destroy() {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment