我正在使用带有基本身份验证的Spring 5 Webflux。
问题:
当我输入错误的用户名或密码弹簧响应Http Status 401并包含www-authenticate: Basic realm="Realm"
Http Header,导致浏览器弹出基本身份验证框。
如何在Spring 5 Webflux中删除该HTTP标头?
我是否必须自定义Webfilter?
答案 0 :(得分:0)
以下代码是从我的项目复制的Kotlin中。但是这个想法可以简单地转移到Java中。
因此,解决方案与自定义Webfilter有关。
@Component
class HttpHeaderWebFilter: WebFilter {
override fun filter(exchange: ServerWebExchange, next: WebFilterChain): Mono<Void> {
return next.filter(exchange).then(Mono.defer {
val headers = exchange.response.headers
if (headers.containsKey("WWW-Authenticate")) {
headers.remove("WWW-Authenticate")
}
Mono.empty<Void>()
})
}
}
答案 1 :(得分:0)
我们可以使用以下
if (exchange.getRequest().getHeaders().containsKey("headerKey")) {
exchange.getRequest().mutate().header("headerKey", null, null);
}
我们使用double null来克服不推荐使用的Overriding方法。
如果您使用的是Spring Framework 5.2,则使用单个null就足够了。