系统自带全局过滤器:
全局过滤器特点:
局部过滤器和全局过滤器区别:
局部:局部针对某个路由, 需要在路由中进行配置
全局:针对所有路由请求, 一旦定义就会投入使用
自定义全局过滤器:
实现 GlobalFiter 过滤器:
package com.tulingxueyuan.filters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; @Component public class LogFilter implements GlobalFilter { Logger log= LoggerFactory.getLogger(this.getClass()); @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { log.info(exchange.getRequest().getPath().value()); return chain.filter(exchange); } }
Gateway跨域配置:
第一种方式:
# 跨域配置 spring: cloud: gateway: globalcors: cors-configurations: '[/**]': # 允许跨域访问的资源 allowedOrigins: "*" #跨域允许来源, * 代表允许所有的请求进行跨域请求 allowedMethods: - GET - POST
第二种方式:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; import org.springframework.web.util.pattern.PathPatternParser; @Configuration public class CorsConfig { @Bean public CorsWebFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.addAllowedMethod("*"); // 允许的method config.addAllowedOrigin("*"); // 允许的来源 config.addAllowedHeader("*"); // 允许的请求头参数 // 运行访问的资源 UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser()); source.registerCorsConfiguration("/**", config); return new CorsWebFilter(source); } }