gateway中的局部过滤器_(五).NET Core中过滤器Filter的使用介绍

知识点回顾:

前面几篇文章分别给大家介绍了

(1)Swagger的集成和用法;

(2)JWT身份验证的集成和用法;

(3)OOM框架AnutoMapper对象映射的用法;

今天给大家介绍过滤器Filter的基本使用:

过滤器有什么作用,在什么场景下适合用到它?

假设一个项目进展到快结束的时候,项目leader为了保证程序的稳定性和可监控和维护性要求将所有的方法加上日志,如果项目比较庞大,方法非常多,那岂不是得费很大得劲来完成这样一件事情。不过不用担心,咋们遇到的问题,伟大的语言设计者早已帮我们想好了解决办法过滤器,过滤器是一种AOP(面向切面编程)技术的体现,AOP具有松耦合,易扩展,代码可复用的特点。

通常我们在这些场景下如身份验证、日志记录、异常获取等会使用到过滤器

.NET Core中的过滤器生命周期:

87e54c407a4deeb36b0e21a862e3e399.png

.NET Core中的过滤器有多种,今天给大家主要介绍ActionFilterAttribute的用法

(1)自定义一个Filter类:

cf844375329469a2061437713cc6c057.png

(2)注册过滤器,注册过滤器有两种方式,一种是全局注册,另一种是局部注册:

2571eedfa6276bda56a201fee9964c9d.png

局部注册,局部注册可以体现在类或方法上:

673e547329e14824b75335dacef88322.png

(3)运行,请求一个具体接口,跟踪一下执行顺序:

f8e10fe3880c1eb41a83ca44109461ac.png

c2da07c4e498fcbf2c9683415392451f.png

可以看到过滤器起到了对应的作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Gateway 是基于 Spring WebFlux 框架开发的网关组件,提供了一种简单、轻量级的方式来构建微服务架构的路由和过滤器。 要实现局部过滤器,可以在 Gateway 配置文件为特定的路由添加过滤器。以下是一种实现方式: 1. 在 Spring Cloud Gateway 配置文件,定义一个路由规则并指定路由的 ID 和目标 URL,例如: ```yaml spring: cloud: gateway: routes: - id: my_route uri: http://example.com filters: - name: my_filter args: key: value ``` 2. 创建一个自定义的过滤器类,实现 `GatewayFilter` 接口,例如: ```java import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.http.HttpStatus; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; public class MyFilter implements GatewayFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 这里可以编写自定义的过滤逻辑 // 例如,根据请求头信息进行验证 String authToken = exchange.getRequest().getHeaders().getFirst("Authorization"); if (authToken == null || !authToken.startsWith("Bearer ")) { exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); return exchange.getResponse().setComplete(); } // 满足条件则继续执行后续过滤器或路由处理器 return chain.filter(exchange); } } ``` 3. 在 Spring Boot 应用程序,将自定义过滤器注册为一个 Bean,例如: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class GatewayConfig { @Bean public MyFilter myFilter() { return new MyFilter(); } } ``` 这样,在配置文件指定的路由上会应用自定义的过滤器。你可以根据实际需求编写不同的过滤器类来实现各种局部过滤器的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值