gateway
作者:互联网
1.引入jar
<!--nacos服务注册发现依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--网关gateway依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
2.属性配置,routes-> id,uri,predicates,filters
(1)id,指定路由唯一标识。
(2)uri,可以指定服务地址也可以指定ip:端口。
(3)predicates,断言有多种规则Path只是其中一种。
(4)filters,过滤器有多种规则。
server: port: 10010 spring: application: name: gateway cloud: nacos: server-addr: localhost:80 gateway: routes: - id: user-service # 路由标示,必须唯一 uri: lb://userservice # 路由的目标地址 predicates: # 路由断言,判断请求是否符合规则 - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合 #filters: # - AddRequestHeader=X-Request-Foo, Bar - id: order-service uri: lb://orderservice predicates: - Path=/order/** default-filters: - AddRequestHeader=X-Request-Foo, haha
3.全局过滤器
(1)实现GlobalFilter接口,编写业务逻辑。
(2)实现Ordered接口设置过滤器顺序值越小越优先,也可以使用@Order(1)注解直接指定值。
@Order(1)
@Component public class AuthorizeFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { //获取参数 MultiValueMap<String, String> queryParams = exchange.getRequest().getQueryParams(); //参数校验 String auth = queryParams.getFirst("auth"); if(auth != null && auth.equals("admin")){ return chain.filter(exchange); } exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); //异常返回 return exchange.getResponse().setComplete(); } @Override public int getOrder() { return 0; } }
标签:exchange,auth,gateway,filters,id,cloud 来源: https://www.cnblogs.com/yjwfcs/p/16267022.html