まず、三つの方法インタフェースをオーバーライドし、HandlerInterceptorインタフェースを実装することで、独自のインターセプタを作成します。
、ログチェックが要求制御層に先立って実行される。preHandle()、プリコールバックメソッドは、例えば、前処理を達成するために
postHandle()は、処理のコールバックメソッドの後、後処理プロセッサを達成する前に、ビューにレンダリングされます
afterCompletion()は、要求全体が全体ビューがレンダリングされた後にコールバックするために、コールバックメソッドを処理され
インポートcom.impte.study.domain.po.User; インポートorg.springframework.lang.Nullable; インポートorg.springframework.stereotype.Component; インポートorg.springframework.web.servlet.HandlerInterceptor; インポートorg.springframework.web.servlet .ModelAndView; インポートするjavax.servlet.http.HttpServletRequest; インポートするjavax.servlet.http.HttpServletResponse; インポートjavax.servlet.http.HttpSession; @Component パブリック クラス LoginInterceptor 実装{からHandlerInterceptor // この方法は、アクセスインタフェース前に行われます、私たちは、ユーザが指定したインターフェース起動する前に、あなたが上陸したのステータスを確認することができ、ビジネスロジックのステータスを確認書くためにここにログインする必要があり 、パブリック ブールpreHandle(リクエストのHttpServletRequest、HttpServletResponseの応答、オブジェクトハンドラ)がスロー例外を{ // 論理的な区別を達成するために、各プロジェクトは、ここで私は着陸を検証するために、最も簡単な抽出ユーザーセッションを使用し、上陸しました。 セッション= HttpSessionのでrequest.getSession(); // ここに着陸する際、ユーザーがセッション中に置かれている ユーザー=(ユーザー)ユーザーをsession.getAttribute(「ユーザー」); // セッションはどのユーザーがされていない場合は、着陸を意味しない IF(ユーザーを== nullの){ // このメソッドは、ユーザーがインターフェイスを使用するにはログインする必要性を呼び出した場合、彼が直接無視ここに上陸していなかった場合、現在の要求を無視するようにfalseを返す // もちろんのを、あなたはいくつかのヒントを返すために、ユーザーに応答を使用することができますそして上陸していない彼に言っ 返す 偽; } 他の{ 戻り trueに ; // そこセッションであれば、ユーザー、ユーザーがログインしていることを示す、解除、ユーザが必要なインターフェイスを呼び出すために続けることができます } } パブリック 無効 postHandleは、(リクエストのHttpServletRequest、HttpServletResponseの応答、ハンドラー、@NullableのModelAndViewのModelAndViewオブジェクト)スローを{例外 } 公共 ボイド afterCompletionは、(HttpServletRequestのリクエスト、レスポンスHttpServletResponseの、ハンドラ、@Nullable例外EXオブジェクト)スロー例外を{ } }
第二に、あなたが作成し、登録インターセプタは、WebConfigurerインタフェースを実装します
輸入com.impte.study.config.interceptors.LoginInterceptor。 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.context.annotation.Configuration。 輸入org.springframework.web.servlet.config.annotation.InterceptorRegistry。 輸入org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry。 輸入org.springframework.web.servlet.config.annotation.WebMvcConfigurer。 @Configuration パブリック クラス WebConfigurerは実装WebMvcConfigurer { @Autowired プライベートLoginInterceptor loginInterceptorを。 //この方法は、など、HTML、JS、CSS、などの静的リソース、設定するために使用され @Override 公共 のボイドaddResourceHandlers(ResourceHandlerRegistryレジストリを){ } // このメソッドは、インターセプタを登録するために使用され、インターセプタはここに私たち自身の必要性を書きます有効にするには登録して追加すること @Override 公共 のボイドaddInterceptors(InterceptorRegistryレジストリ){ // 、addPathPatterns(「/ **」)インターセプトにすべての要求を表し // excludePathPatterns(「ログイン/」は「登録は/」、)それ以外着陸し、登録から言っ着陸着陸もアクセスできるので、また、登録が要求されない registry.addInterceptor(loginInterceptor).addPathPatterns( "/ **")excludePathPatterns( "/ログイン"、 "登録/。" ); } }
オリジナルリンク:
https://blog.csdn.net/qq_30745307/article/details/80974407