spring - Spring weflux,停止过滤器链并从当前过滤器返回 BAD REQUEST
问题描述
在spring webflux中,如何停止过滤器链并从当前过滤器返回BAD_REQUEST?
public class AuthorizationFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return chain.filter(Optional.of(exchange)
.filter(serverWebExchange -> serverWebExchange.getRequest().getURI().getPath().endsWith("/authorize"))
.orElse(//RETRUN BADREQUEST here));
}
解决方案
您可以处理路径并设置响应代码:
@Component
public class AuthorizationFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
List<String> allowedPaths = new ArrayList<>();
allowedPaths.add("/authorize");
if (allowedPaths.contains(exchange.getRequest().getPath().toString())) {
return chain.filter(exchange);
} else {
exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST);
return exchange.getResponse().setComplete();
}
}
}
推荐阅读
- servlets - Httpservletrequest.authenticate() 方法不发送重定向到登录页面
- php - SQLite3 与 PHP 如何使用在其他列中找到的数据对列进行交叉引用
- or-tools - 如何在 google or-tools vrptw 中设置时间窗口?
- mysql - MariaDb:如何创建嵌套的 json 对象查询
- azure - 在 Azure 开发测试实验室中创建 VS2019 VM 的存储配置文件错误
- java - JUnit/Java:如何强制线程屈服?
- javascript - 为什么“exports”和“module.exports”的行为不同?
- c# - 在 C# WCF 服务中,如果 HostNameComparisonMode = "HostNameComparisonMode.Exact",则无法在浏览器中访问 URL,显示 404 错误
- c - Strlen Valgrind 大小为 1 的无效读取
- asp.net-core - Azure Devops Nuget 任务未打包依赖包