[SpringCloud] Uso del filtro de puerta de enlace (19)

Introducción al filtro de puerta de enlace

  Filtro, en el filtro de tipo "pre" puede usarse para verificación de parámetros, verificación de permisos, monitoreo de tráfico, salida de registro, conversión de protocolo, etc., en el filtro de tipo "post" puede usarse para modificar el contenido de respuesta, encabezado de respuesta, registro La salida, el monitoreo de flujo, etc., tienen un papel muy importante

  Además de dividirse en "pre" y "post" Filter, en Spring Cloud Gateway, Filter se puede dividir en otros dos tipos desde el ámbito de acción, uno es Gateway Filter para una única ruta, que se encuentra en el archivo de configuración La redacción en es similar a la predicción; el otro es el Global Gateway Filer para todas las rutas. Ahora explique estos dos archivadores desde la dimensión del alcance de la acción.

Uso del filtro de puerta de enlace

1. Uso del filtro de puerta de enlace para una ruta única

  Sitio web oficial de referencia: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#gatewayfilter-factories

2. Uso de Global Gateway Filer

  Cuando la solicitud coincide con la ruta, el controlador web de filtrado agregará todas las instancias de GlobalFilter y todas las instancias de GatewayFilter específico a la ruta a la cadena de filtros. La cadena de filtro combinada se ordena por la interfaz org.springframework.core.Ordered, y puede configurarla implementando el método getOrder ().

  Dado que Spring Cloud Gateway distingue entre la etapa "antes" y la etapa "después" que ejecuta la lógica del filtro, el filtro con la prioridad más alta es el primero en la etapa "antes" y el último en la etapa "después".

  El proyecto de demostración utiliza el ejemplo de código de configuración de enrutamiento de puerta de enlace [SpringCloud] (diecisiete)

  1) En el módulo de puerta de enlace springcloud-gateway-gateway9527, cree un nuevo filtro para implementar la interfaz GlobalFilter, ordenada 

1  @Component
 2  @ SLF4J
 3  público  clase MyLogGateWayFilter implementos GlobalFilter, ordenados {
 4      @ Override
 5      público Mono <Void> filtro (intercambio ServerWebExchange, cadena GatewayFilterChain) {
 6          log.info ( "========= Adelante MyLogGateWayFilter: "+ new Date () +" ========== " );
7          Cadena uname = exchange.getRequest (). GetQueryParams (). GetFirst ("uname" );
8          if (uname == null ) {
 9              log.info ("========= 用户 名为 null , 非法 用户 ========" );
10              exchange.getResponse (). SetComplete ();
11          }
 12          // 成功
13          return chain.filter (intercambio);
14      }
 15  
16      @Override
 17      public  int getOrder () {
 18          return 0 ;
19      }
 20 }

  2) prueba

    a. Inicie el proyecto

    b. Dirección de visita: http: // localhost: 9527 / payment / get / 1

    Error de acceso, registros de impresión imprimen usuarios ilegales

    c. Dirección de acceso: http: // localhost: 9527 / payment / get / 1? uname = 1

    Acceso normal:

    

  

Supongo que te gusta

Origin www.cnblogs.com/h--d/p/12741935.html
Recomendado
Clasificación