package org.dromara.gateway.filter; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.same.SaSameUtil; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; /** * 转发认证过滤器(内部服务外网隔离) * * @author Lion Li */ @Component public class ForwardAuthFilter implements GlobalFilter, Ordered { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 未开启配置则直接跳过 if (!SaManager.getConfig().getCheckSameToken()) { return chain.filter(exchange); } ServerHttpRequest newRequest = exchange .getRequest() .mutate() // 为请求追加 Same-Token 参数 .header(SaSameUtil.SAME_TOKEN, SaSameUtil.getToken()) .build(); ServerWebExchange newExchange = exchange.mutate().request(newRequest).build(); return chain.filter(newExchange); } @Override public int getOrder() { return -100; } }