|
|
|
@ -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() |
|
|
|
} |
|
|
|
} |
|
|
|
|