[SpringCloud]ゲートウェイフィルターの使用(19)

ゲートウェイフィルターの概要

  フィルター、「pre」タイプのフィルターは、パラメーター検証、権限検証、トラフィックの監視、ログ出力、プロトコル変換などに使用できます。「post」タイプのフィルターは、応答コンテンツ、応答ヘッダー、ログの変更に使用できます出力、フロー監視など、非常に重要な役割があります

  Spring Cloud Gatewayでは、「事前」と「事後」のフィルターに分けられるほか、アクションの範囲からフィルターを他の2つのタイプに分けることができます。1つは、構成ファイルにある単一ルートのゲートウェイフィルターです。の表現は予測に似ており、もう1つはすべてのルートのグローバルゲートウェイファイラーです。次に、これらの2つのファイラーについて、アクションスコープの側面から説明します。

ゲートウェイフィルターの使用

1.単一ルートのゲートウェイフィルターの使用

  リファレンスの公式ウェブサイト:https : //cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#gatewayfilter-factories

2.グローバルゲートウェイファイラーの使用

  リクエストがルートと一致すると、フィルタリングWebハンドラーはGlobalFilterのすべてのインスタンスと特定のGatewayFilterのすべてのインスタンスをフィルターチェーンへのルートに追加します。結合されたフィルターチェーンはorg.springframework.core.Orderedインターフェースによってソートされ、getOrder()メソッドを実装することで設定できます。

  Spring Cloud Gatewayは、フィルターロジックを実行する「前」ステージと「後」ステージを区別するため、優先度が最も高いフィルターは、「前」ステージの最初であり、「後」ステージの最後です。

  デモプロジェクトでは、[SpringCloud]ゲートウェイルーティング構成(17)のコード例を使用しています

  1)springcloud-gateway-gateway9527ゲートウェイモジュールで、新しいフィルターを作成して、インターフェースGlobalFilter、Orderedを実装します 

1  @Component
 2  @ SLF4J
 3  パブリック クラス MyLogGateWayFilter 実装GlobalFilter、順序{
 4      @Override
 5      公共モノ<ボイド> フィルタ(ServerWebExchange交換、GatewayFilterChain鎖){
 6          log.info(「=========に来MyLogGateWayFilter: "+ new Date()+" ========== " );
7          文字列uname = exchange.getRequest()。getQueryParams()。getFirst( "uname" );
8          if(uname == null ){
 9              log.info( "=========用户名是null、非法用户========" );
10              exchange.getResponse()。setComplete();
11          }
 12          // 成功
13          return chain.filter(exchange);
14      }
 15  
16      @Override
 17      public  int getOrder(){
 18          return 0 ;
19      }
 20 }

  2)テスト

    a。プロジェクトを開始する

    b。訪問アドレス:http:// localhost:9527 / payment / get / 1

    アクセスエラー、ログレコードに不正なユーザーが印刷される

    c。アクセスアドレス:http:// localhost:9527 / payment / get / 1?uname = 1

    通常のアクセス:

    

  

おすすめ

転載: www.cnblogs.com/h--d/p/12741935.html