建设网站内容的策划书,重庆建设传动科技有限公司,wordpress菜单链接地址,如何做好网络营销工作前提#xff1a;先保证Gateway网关项目 和 Nacos注册中心 等可以正常访问和调用#xff0c;搭建方法可查看博文SpringCloud Gateway网关 项目创建 及 整合Nacos开发_spring gateway如何设置工程名称-CSDN博客
类似的全局鉴权方案#xff0c;参考如下#xff1a; SpringClo…前提先保证Gateway网关项目 和 Nacos注册中心 等可以正常访问和调用搭建方法可查看博文SpringCloud Gateway网关 项目创建 及 整合Nacos开发_spring gateway如何设置工程名称-CSDN博客
类似的全局鉴权方案参考如下 SpringCloud Gateway网关 全局过滤器[header token] 实现用户鉴权_gateway添加鉴权过滤器-CSDN博客
核心代码如下
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;import java.nio.charset.StandardCharsets;Component
public class GlobalAuthFilter implements GlobalFilter, Ordered {private AntPathMatcher antPathMatcher new AntPathMatcher();Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest serverHttpRequest exchange.getRequest();String path serverHttpRequest.getURI().getPath();// 判断路径中是否包含 system如果包含system,则不允许访问if (antPathMatcher.match(/**/system/**, path)) {ServerHttpResponse response exchange.getResponse();response.getHeaders().add(Content-Type, application/json;charsetUTF-8);response.setStatusCode(HttpStatus.FORBIDDEN);DataBufferFactory dataBufferFactory response.bufferFactory();DataBuffer dataBuffer dataBufferFactory.wrap(无权限.getBytes(StandardCharsets.UTF_8));return response.writeWith(Mono.just(dataBuffer));//设置状态码 未授权401//exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);//个人理解,终止输出访问//return exchange.getResponse().setComplete();}return chain.filter(exchange);}/*** 优先级提到最高** return*/Overridepublic int getOrder() {return 0;}
}