@ -225,7 +225,7 @@ class HttpSecurityDslTests {
@@ -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 {
@@ -236,7 +236,55 @@ class HttpSecurityDslTests {
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 ( )
}