Я хочу загрузить разные провайдеры аутентификации для разных URL.Например, если у меня есть URL, соответствующий «/ foo / что-то», тогда загрузите FooProvider, а для «bar / что-то» -> BarProvider.Проблема в том, что когда я нажимаю на ссылку "bar / что-то", параметр sessionScope (я передаю его в конструктор провайдера) по-прежнему "foo".Это означает, что FooProvider загружен, но это не то, что я ожидаю.Я что-то упускаю?Заранее спасибо.
abstract class TokenAuthenticationProvider (
protected val sessionScope: SessionScope
) : AuthenticationProvider {
private fun authenticateToken(authentication: TokenAuthentication): Authentication {
println("sessionScope $sessionScope")
}
}
@Component
class FooAuthenticationProvider : TokenAuthenticationProvider (sessionScope = SessionScope.Foo)
@Component
class BarAuthenticationProvider : TokenAuthenticationProvider (sessionScope = SessionScope.Bar)
@Configuration
@EnableWebSecurity
class WebSecurityConfiguration @Autowired constructor(
private val fooProvider: FooProvider,
private val barProvider: BarProvider,
private val authFilter: AuthFilter,
private val corsFilter: CustomCorsFilter
) : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
...
http.authorizeRequests()
.antMatchers("foo/**")
.fullyAuthenticated()
.and()
.authenticationProvider(fooProvider)
http.authorizeRequests()
.antMatchers("bar/**")
.fullyAuthenticated()
.and()
.authenticationProvider(barProvider)
...
}
override fun configure(auth: AuthenticationManagerBuilder) {
auth.authenticationProvider(fooProvider)
auth.authenticationProvider(barProvider)
}
}