Add addFilterAfter and addFilterBefore to Kotlin DSL
Fixes gh-8316
This commit is contained in:
committed by
GitHub
parent
1de0cf5057
commit
dc6b8ce470
@@ -225,7 +225,7 @@ class HttpSecurityDslTests {
|
||||
val filters: List<Filter> = filterChain.getFilters("/")
|
||||
|
||||
assertThat(filters).hasSize(1)
|
||||
assertThat(filters[0]).isExactlyInstanceOf(CustomFilterConfig.CustomFilter::class.java)
|
||||
assertThat(filters[0]).isExactlyInstanceOf(CustomFilter::class.java)
|
||||
}
|
||||
|
||||
@EnableWebSecurity
|
||||
@@ -236,7 +236,55 @@ class HttpSecurityDslTests {
|
||||
addFilterAt(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
class CustomFilter : UsernamePasswordAuthenticationFilter()
|
||||
}
|
||||
|
||||
@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
|
||||
)
|
||||
}
|
||||
|
||||
@EnableWebSecurity
|
||||
@EnableWebMvc
|
||||
open class CustomFilterBeforeConfig : WebSecurityConfigurerAdapter() {
|
||||
override fun configure(http: HttpSecurity) {
|
||||
http {
|
||||
addFilterBefore(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
||||
formLogin {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class CustomFilter : UsernamePasswordAuthenticationFilter()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user