SpringBoot

1. 添加依赖

<!--        服务网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

<!--        nacos服务发现依赖,需要将该服务注册到nacos中-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

2. 添加配置信息

spring:
  application:
    name: Gateway                           # 注册到 nacos 服务中的名称
  cloud:
    nacos:
      server-addr: localhost:8840           # nacos 服务地址
    gateway:
      routes:
        - id: user-service                  # 路由标识,保证唯一
          uri: "lb://UserService"           # 路由的目标地址(lb:(loadBalance)负载均衡,http: )
          predicates:                       # 路由断言,判断请求是否合法
            - Path=/user/**                 # 请求必须满足该请求路径
#          filters:                          # 添加过滤器
#            - AddRequestHeader=Key,value    # 请求头参数
        - id: order-service
          uri: "lb://OrderService"
          predicates:
            - Path=/order/**
#      default-filters:                      # 全服务过滤器
#        - AddRequestHeader=Key,value
server:
  port: 10010                               # 服务的端口号


alt

GlobalFilter

package org.example.gateway.filter;

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;


@Order  //过滤器优先级([-2147483647,2147483647])从高到低(/实现Ordered接口)
@Component
public class MyGlobalFilter implements GlobalFilter{
    /**
     *
     * @param exchange  请求上下文
     * @param chain 过滤器链
     * @return
     */
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        //获取请求参数
        ServerHttpRequest request = exchange.getRequest();
        MultiValueMap<String, String> params = request.getQueryParams();
        //获取请求某个参数值
        String username = params.getFirst("username");
        if("admin".equals(username)){
            return chain.filter(exchange);   //过滤器放行
        }
        //设置响应状态码-401
        exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
        return exchange.getResponse().setComplete();
    }
}

官方文档