filter的应用

title: Filter的应用

tags:

VirtualFilterChain
含有12个拦截器
当是登陆请求路径的时候即login
DefaultLoginPageGeneratingFilter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void (ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;

boolean loginError = isErrorPage(request);
boolean logoutSuccess = isLogoutSuccess(request);
if (isLoginUrlRequest(request) || loginError || logoutSuccess) {
String loginPageHtml = generateLoginPageHtml(request, loginError,
logoutSuccess);
response.setContentType("text/html;charset=UTF-8");
response.setContentLength(loginPageHtml.length());
response.getWriter().write(loginPageHtml);

return;
}

chain.doFilter(request, response);
}

当不是登陆的路径 应该重定向
通过ExceptionTranslationFilter可以重定向, 通过重定向

1
2
3
4

if (ase != null) {
handleSpringSecurityException(request, response, chain, ase);
}

ApplicationFilterChain