最近、SpringMVCでプロジェクトを書くとき、私は問題に遭遇しました。これはメソッドの認証問題です。この問題は1日解決され、最終的に解決されました。以下のソリューションを見てみましょう。
プロジェクトの要件:認証が必要な場合は、ユーザーログインで実行できる操作のみなど、ラベルを付けるだけです。一般に、最初にメソッドを実行するときにユーザーのIDINPITを検証します。これにより、多くのワークロードが見えなくなり、ホイールが再現されます。 Java Annotationsを使用すると、認証を必要とする方法にラベルを付けるだけです。
解決:
1.最初に注釈クラスを作成します。
@documented@enternited@target({elementType.Method、elementType.type})@retention(retentionPolicy.runtime)public @interface auth {boolean validate()default true;}2。別のインターセプターを作成します。
パブリッククラスのauthenterceptor拡張base interceptor {@override public boolean prehandle(httpservletrequest request、httpservletresponse response、object handler)は例外{if(handler.getclass()。isassignablefrom(handlermethod.class)){authpassport =(handlermethod) Handler).GetMethodannotation(auth.class); //許可は宣言されていないか、許可が宣言されていないか、許可が確認されない場合、(authpassport == null){return true;} else {//ここで独自の許可検証ロジックを実装している場合(true){//検証が成功した場合(//検証 "); return true;} else {//検証が失敗した場合// login interfaceに戻る// system.out.println("許可確認は正しい ");3。インターセプターの構成:次のコードを *-servlet.xmlに追加する必要があります。構成ファイルをカスタマイズすると、定義した構成ファイルに直接配置することもできます。
<MVC:インターセプター> <bean/> </mvc:インターセプター>
注:デフォルトをRequestMappingHandLermappingに変更し、RequestMappingHandlerAdapterのBeanを追加する必要があります
Tomcatを再起動するだけです。
温かいリマインダー:メソッドの認証が必要な場合は、メソッドに@Authと入力するだけです。クラスのすべての方法に対して認証が必要な場合は、クラスの@Authと入力するだけです。
したがって、問題は、メソッドインターセプターが静的リソースを一緒に迎撃することです。次のようなTomcatで静的ファイルを傍受する必要があります。私のソリューションは、Web.xmlで構成することです。良い方法がある場合は、QQ 752432995を追加して議論することもできます。
<サーブレットマッピング> <Servlet-Name>デフォルト</servlet-name> <url-pattern>*。Jpg</url-pattern> </servlet-mapping> <servlet-name> <servlet-name> </servlet-name> <url-pattern>*。png </url-pattern>
要約します
上記は、メソッド認証のためにSpringMVCに使用される注釈インターセプターのソリューションコードに関するこの記事の内容全体です。私はそれが誰にでも役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
SpringMVCインターセプターは、シングルサインオンを実装します
SpringMVCインターセプターが監視セッションが期限切れになるかどうかの詳細な説明
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!