Итак, у меня есть один AuthenticationWebFilter для добавления триггера, когда кто-то проходит проверку подлинности следующим образом:
val builder : HttpSecurity.AuthorizeExchangeBuilder = http
.addFilterAt(
CustomAuthenticationWebFilter(securityContextRepository),
SecurityWebFiltersOrder.AUTHENTICATION
)
.authorizeExchange().permitAll()
А затем в «CustomAuthenticationWebFilter» я изменяю statusCode с некоторой логикой, примерно так:
override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
return super.filter(exchange, chain)
.doOnSuccess {
exchange.response.statusCode = UNAUTHORIZED
return@doOnSuccess
}
Дело в том, что когда я делаю запрос, поток перед этим переходит к WebFilter
AbstractServerHttpResponse # doCommit
и затем состояние меняется на «ЗАВЕРШЕНО», а когда я звоню на
AbstractServerHttpResponse # setStatusCode
изменить его невозможно.
Можно ли изменить statusCode перед тем, как быть зафиксированным?
build.gradle
компиляция ( 'org.springframework.boot: весна-загрузка-стартер-webflux')
компиляции ( 'org.springframework.security:spring-security-web')
компиляции ( 'org.springframework.security:spring-security-config')