1:傍受するファーストクラスの治療コースを持っているインターセプタを追加するspringmvc設定ファイルも上の書き込み
<MVC:インターセプタ>
<MVC:インターセプター>
<MVC:マッピングパス= "/ **" />
<ビーンクラス = "com.kad.authorization.AuthorizationInterceptor" />
</ MVC:インターセプター>
</ MVC:インターセプタ>
パス上の= / **すべてのフォルダディレクトリの代わりに。一般的に、すべての書き込み要求を傍受することができるようになりますので
<Beanクラス=「com.kad.authorization.AuthorizationInterceptor」/>このプロセスは、傍受基づいています
2:@Authorizationインタフェースを書きます
これは、いくつかの下にある。後で結論づけこのインタフェースは、訪問者はこの注釈の上、インターセプトし、関連処理を行うために注釈を付け、これらのメソッドをインターセプトするための処理方法をもたらすために、メソッドにアクセスするとき、これは、コメント必要なインターフェイスをされ、コンパイラに指示します
訪問者はバッジ@Authorizationの必須メソッドを持参するように、段階認証プロセスがトークンを行い、トークンの検証、実用的なアプリケーション、およびその他のサービスをしない、@Authorization、および一貫性のあるブロックルールを着用していない方は、ログインレジスタがあるなど何の認証トークンコースのプロジェクトの要件は同じではありませんん。ルール・セットが同じではありません
com.kad.authorizationパッケージ; インポートjava.lang.annotation.ElementType; インポートjava.lang.annotation.Retention; インポートjava.lang.annotation.RetentionPolicy; インポートjava.lang.annotation.Target; / * * *コントローラーでこの方法を使用上の注意、この方法マッピングは、ユーザーがログインしているかどうかを確認し、未知のリターンが401エラー * @see com.scienjus.authorization.interceptor.AuthorizationInterceptor * @author ScienJus * @date 2015年7月31日。 * / @ターゲット(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) パブリック@interface認可{ }
3:プロセス@Authorization注釈を追加要求クラス処理要求では、トークン検証エラーは、一般的に、一般に、真と偽のエラー復帰を修正は401であります
パブリック クラス AuthorizationInterceptorは拡張HandlerInterceptorAdapter { @Resource プライベートTokenManagerマネージャを、 パブリック ブールpreHandle(HttpServletRequestのリクエスト、 HttpServletResponseの応答、オブジェクトハンドラ)がスロー例外{ // 如果不是映射到方法直接通过 場合(!(ハンドラinstanceofは{HandlerMethod))を 返す 真。 } HandlerMethod handlerMethod = (HandlerMethod)ハンドラ。 方法メソッド =handlerMethod.getMethod(); // 指示@authorization場合、検証はリターンにエラー401を検証するために必要とされる IF(method.getAnnotation(認可クラス!)= NULL ){ //は、ヘッダーからトークンを取得 文字列の許可=要求.getParameter( "ユーザ名"); // .getHeader(Constants.AUTHORIZATION); // 認証トークン TokenModelモデル= manager.getToken(認証); // ないの次の訪問、スキップ 文字列名= handlerMethod.getBeanType( ).getPackage()のgetName(); / * IF(name.contains( "com.kad.app.action.user")){ trueを返すように; } * / IF (manager.checkToken(モデル)){ // トークン検証が成功した場合、トークンは注射後容易にするために、要求の存在下で、ユーザIDに対応する request.setAttribute(Constants.CURRENT_USER_ID、model.getUserId()) ; 返す trueに; } 他の { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); 戻り falseに; } } 戻り trueに; } }
テスト
@Authorization @RequestMapping(値 =「/ AuthTest」) 公共 ボイド試験(ユーザ名文字列、文字列のパスワード) { ユーザー情報_uresinfo = NULL ; 列gsonString = NULL ;
それは偽で直接場合、それを最初のインターセプターを処理するためのクライアント要求の処理方法リターンは、もし正しいの試験方法でこれにジャンプします