|
@@ -225,7 +225,7 @@ class HttpSecurityDslTests {
|
|
val filters: List<Filter> = filterChain.getFilters("/")
|
|
val filters: List<Filter> = filterChain.getFilters("/")
|
|
|
|
|
|
assertThat(filters).hasSize(1)
|
|
assertThat(filters).hasSize(1)
|
|
- assertThat(filters[0]).isExactlyInstanceOf(CustomFilterConfig.CustomFilter::class.java)
|
|
|
|
|
|
+ assertThat(filters[0]).isExactlyInstanceOf(CustomFilter::class.java)
|
|
}
|
|
}
|
|
|
|
|
|
@EnableWebSecurity
|
|
@EnableWebSecurity
|
|
@@ -236,7 +236,55 @@ class HttpSecurityDslTests {
|
|
addFilterAt(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
|
addFilterAt(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ fun `HTTP security when custom filter configured then custom filter added after specific filter to filter chain`() {
|
|
|
|
+ this.spring.register(CustomFilterAfterConfig::class.java).autowire()
|
|
|
|
+
|
|
|
|
+ val filterChain = spring.context.getBean(FilterChainProxy::class.java)
|
|
|
|
+ val filters: List<Class<out Filter>> = filterChain.getFilters("/").map { it.javaClass }
|
|
|
|
+
|
|
|
|
+ assertThat(filters).containsSubsequence(
|
|
|
|
+ UsernamePasswordAuthenticationFilter::class.java,
|
|
|
|
+ CustomFilter::class.java
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @EnableWebSecurity
|
|
|
|
+ @EnableWebMvc
|
|
|
|
+ open class CustomFilterAfterConfig : WebSecurityConfigurerAdapter() {
|
|
|
|
+ override fun configure(http: HttpSecurity) {
|
|
|
|
+ http {
|
|
|
|
+ addFilterAfter(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
|
|
|
+ formLogin {}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ fun `HTTP security when custom filter configured then custom filter added before specific filter to filter chain`() {
|
|
|
|
+ this.spring.register(CustomFilterBeforeConfig::class.java).autowire()
|
|
|
|
+
|
|
|
|
+ val filterChain = spring.context.getBean(FilterChainProxy::class.java)
|
|
|
|
+ val filters: List<Class<out Filter>> = filterChain.getFilters("/").map { it.javaClass }
|
|
|
|
+
|
|
|
|
+ assertThat(filters).containsSubsequence(
|
|
|
|
+ CustomFilter::class.java,
|
|
|
|
+ UsernamePasswordAuthenticationFilter::class.java
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
|
|
- class CustomFilter : UsernamePasswordAuthenticationFilter()
|
|
|
|
|
|
+ @EnableWebSecurity
|
|
|
|
+ @EnableWebMvc
|
|
|
|
+ open class CustomFilterBeforeConfig : WebSecurityConfigurerAdapter() {
|
|
|
|
+ override fun configure(http: HttpSecurity) {
|
|
|
|
+ http {
|
|
|
|
+ addFilterBefore(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
|
|
|
+ formLogin {}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ class CustomFilter : UsernamePasswordAuthenticationFilter()
|
|
}
|
|
}
|