From 75593037fcd0c14ff41ab4d04ae999da9794e9e5 Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Mon, 26 Sep 2016 17:24:09 +0300 Subject: [PATCH] filter hierarchy --- .../security/filter/CustomHttpFilter.java | 32 +++++++++++++++++++ .../security/filter/FilterConfiguration.java | 28 ++++++++++++++++ .../security/filter/GenericCustomFilter.java | 16 ++++++++++ .../filter/GenericCustomHttpFilter.java | 22 +++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java new file mode 100644 index 0000000000..00a17fbb39 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java @@ -0,0 +1,32 @@ +package org.baeldung.security.filter; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +@Order(Ordered.LOWEST_PRECEDENCE) +public class CustomHttpFilter extends GenericCustomHttpFilter { + + @Override + public void init(FilterConfig config) throws ServletException { + System.out.println(config.getInitParameter("first-init-param") + + config.getInitParameter("second-init-param")); + } + + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain + chain) throws IOException, ServletException { + System.out.println("CustomHttpFilter is in action [the request is going to the server]."); + chain.doFilter(request, response); + System.out.println("CustomHttpFilter is in action [the request has come from the server]."); + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java new file mode 100644 index 0000000000..12447a29af --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java @@ -0,0 +1,28 @@ +package org.baeldung.security.filter; + +import org.springframework.boot.context.embedded.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; + +import static java.util.Collections.singletonList; + +@Configuration +public class FilterConfiguration { + + @Bean + public FilterRegistrationBean getCustomFilterRegistrationBean() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new CustomHttpFilter()); + + registration.setInitParameters(new HashMap() {{ + put("first-init-param", "Hello from "); + put("second-init-param", "Filter!"); + }}); + registration.setUrlPatterns(singletonList("/user/registration")); + + return registration; + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java new file mode 100644 index 0000000000..e808b1aa0c --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java @@ -0,0 +1,16 @@ +package org.baeldung.security.filter; + + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +public abstract class GenericCustomFilter implements Filter { + + @Override + public void init(FilterConfig filterConfig) throws ServletException {} + + @Override + public void destroy() {} + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java new file mode 100644 index 0000000000..6fb024c377 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java @@ -0,0 +1,22 @@ +package org.baeldung.security.filter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class GenericCustomHttpFilter extends GenericCustomFilter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain); + } + + public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, + FilterChain chain) throws IOException, ServletException; + +}