Код статуса Webflux не может быть изменен - PullRequest
0 голосов
/ 14 мая 2018

Итак, у меня есть один 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')

1 Ответ

0 голосов
/ 15 мая 2018

Хорошо, после тестирования многих вещей в эти дни, я решил это, просто изменив «SecurityWebFiltersOrder» на «SecurityWebFiltersOrder.AUTHORIZATION»

...