ゲートウェイフィルタリングサービスをルーティング使用SpringCloud- - ログイン・トークンを傍受する前に例があるか否か

シーン

(ダウンロードするコードを有する)ゲートウェイ統合アクセスインタフェースをルーティング使用SpringCloud-。

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102733039

上記ルー​​ティングゲートウェイ統合アクセスインタフェースを使用して達成された後、次のルーティングゲートウェイ・サービス・フィルタリングを使用。

注意:

ブログ:
https://blog.csdn.net/badao_liumang_qizhi
の社会的関心番号
猿の横柄プログラム
買収関連のプログラミング電子書籍、チュートリアル、無料ダウンロードのためにプッシュ。

実現

Zuulは、以前に統合ネットワーク管理機能をルーティングするために使用されます。Zuul機能がサービスをフィルタリングしている啓示もあります。

のみZuulFilterクラスを継承し、その上に@Componentクラスに注釈を追加する必要があります。

プロジェクトパッケージパッケージの新しいカテゴリの下に新しいフィルターバッグ、LoginFilter

com.badao.hello.spring.cloud.zuul.filterパッケージ; 

インポートcom.netflix.zuul.ZuulFilter; 
インポートcom.netflix.zuul.context.RequestContext; 
インポートcom.netflix.zuul.exception.ZuulException; 
インポートorg.slf4j .Logger; 
インポートorg.slf4j.LoggerFactory; 
インポートorg.springframework.stereotype.Component; 

インポートするjavax.servlet.http.HttpServletRequest; 
インポートにjava.io.IOException; 


@Component 
パブリック クラスLoginFilter ZuulFilter {延び

    プライベート 静的 LoggerFactoryの最終ロガー=ロガー(LoginFilter .getLogger クラス); 

    / * * 
     *フィルタ型の構成、フィルタのライフサイクルの4種類がある
     * 1 PREは:ルーティング前 
     * 2ルーティングは:のルーティング
     * 3.ポスト:ルート
     * 4 Error:エラーがコール送信
     * @return 
     * / 
    @Override 
    パブリック文字列のfilterType(){
         リターン " プレ" ; 
    } 

    / * * 
     *順次配置フィルタ
     * @return 
     * / 
    @Override 
    公衆 INT filterOrder(){
         戻り 0 ; 
    } 

    / * * 
     *設定は、濾過されるべきである:真/必要な、偽/必要はない
     * @return 
     * / 
    @Override 
    パブリックブールshouldFilter(){
         リターン trueに; 
    } 

    / * * 
     *特定のサービス・コード・フィルタ
     * @return 
     * @throws ZuulException 
     * / 
    @Override 
    パブリックオブジェクトRUN()ZuulExceptionスロー{
         // 取得HttpServletRequestオブジェクト 
        RequestContextのコンテキスト= RequestContext.getCurrentContext(); 
        HttpServletRequestのリクエスト = コンテキスト。 GetRequest(); 
        logger.info(" {} {} >>> " 、request.getMethod()、request.getRequestURL()のtoString());
         // token--要求パラメータトークン取得する 
        文字列トークン=要求を。 getParameter(" トークン");
         IF(トークン==ヌル){ 
            logger.warn(" トークンが空である" );
             // SをfalseにZuul応答設定されている 
            context.setSendZuulResponse(falseにする);
             //は、許可がない応答ステータスコード401を設定 
            context.setResponseStatusCode(401 );
             試み{
                 / / ページへの表示内容 
                context.getResponse()にgetWriter()(..書く" NO局" ); 
            } キャッチ(IOExceptionをE){ 
            } 
        } { 
            logger.info(" OK " ); 
        } 
        戻り ヌル
    } 
}

 

注意:

4つの方法は、以下の具体的な効果を書き換える必要。

特定の濾過方法では、許可がないわけではない、トークンパラメータは、要求があるか否かが判断されています。

filterType

フィルタ型の構成、フィルタのライフサイクルの4種類がある
。1.事前:ルート前
ルーティング2.ルーティング
3.ポスト:ルート
4 Error:エラー送信コールが

フィルタ順序

配置順次濾過し、フロントの値が小さいです。

shouldFilter

フィルタリングするように構成されて:偽、真/必要性/必要はありません。

オブジェクトの実行は()ZuulExceptionを投げます

特定のサービスコードフィルタ

これまでのところ、全体のサービスシステムの構造として、

 

 

 

ターン我々はユーレカサービス、サービスプロバイダ、サービスコンシューマ2、アプリケーションの起動クラスのzuulを開始します

 

 

その後に、あなたのブラウザをポイント:

http:// localhostを:8769 / API / / HIメッセージ= HelloZuul?

 

 

 あなたはトークンリクエストパラメータで、この時間に行く場合は、ブラウザを開いて、もう一度入力してください:

http:// localhostを:8769 / API / / HIメッセージ= HelloZuul&トークン= badao?

 

 

おすすめ

転載: www.cnblogs.com/badaoliumangqizhi/p/11735714.html