本文介紹了Spring WebFlux添加WebFIlter以匹配特定路徑的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
在Spring Boot應用程序的上下文中,我嘗試添加一個WebFilter以僅篩選與特定路徑匹配的請求。
到目前為止,我有一個過濾器:
@Component
public class AuthenticationFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange serverWebExchange,
WebFilterChain webFilterChain) {
final ServerHttpRequest request = serverWebExchange.getRequest();
if (request.getPath().pathWithinApplication().value().startsWith("/api/product")) {
// logic to allow or reject the processing of the request
}
}
}
我試圖實現的是從篩選器中刪除路徑匹配,并將其添加到其他更合適的位置,例如,從我到目前為止讀到的內容,SecurityWebFilterChain
。
非常感謝!
推薦答案
我可能有一種更清晰的方法來解決您的問題。它基于UrlBasedCorsConfigurationSource中的代碼。它使用PathPattern滿足您的需求。
@Component
public class AuthenticationFilter implements WebFilter {
private final PathPattern pathPattern;
public AuthenticationFilter() {
pathPattern = new PathPatternParser().parse("/api/product");
}
@Override
public Mono<Void> filter(ServerWebExchange serverWebExchange,
WebFilterChain webFilterChain) {
final ServerHttpRequest request = serverWebExchange.getRequest();
if (pathPattern.matches(request.getPath().pathWithinApplication())) {
// logic to allow or reject the processing of the request
}
}
}
這篇關于Spring WebFlux添加WebFIlter以匹配特定路徑的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,