ホームページ >ウェブフロントエンド >jsチュートリアル >springmvc はアノテーションインターセプターを実装します

springmvc はアノテーションインターセプターを実装します

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-13 17:05:311394ブラウズ

今回はアノテーションインターセプターを実装する springmvc について説明します。 springmvc がアノテーションインターセプターを実装するための 注意事項 は何ですか? 以下は実際的なケースです。

最近 SpringMvc でプロジェクトを書いていたときに、メソッドの認証の問題に遭遇しました。 1 日かけて解決したので、以下の解決策を見てみましょう。

プロジェクト要件

:

ユーザーログインでのみ実行できる操作など、認証が必要な場合は、ラベルを付けるだけで済みます。通常、メソッドを実行するときに最初にユーザーの身元を確認します。これにより、実質的に作業負荷が増加します。 Java アノテーションを使用すると、認証が必要なメソッドにラベルを付けるだけで済みます。 解決策:

1. まずアノテーションクラスを作成します:

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}
2. 別のインターセプターを作成します:

public class AuthInterceptor extends BaseInterceptor{
	@Override
	  public Boolean preHandle(HttpServletRequest request,
	      HttpServletResponse response, Object handler) throws Exception {
		if(handler.getClass().isAssignableFrom(HandlerMethod.class)){
			Auth authPassport = ((HandlerMethod) handler).getMethodAnnotation(Auth.class);
			//没有声明需要权限,或者声明不验证权限
			if(authPassport==null){
				return true;
			} else{
				//在这里实现自己的权限验证逻辑
				if(true){
					//如果验证成功返回true(这里直接写false来模拟验证失败的处理)
					System.out.println("执行权限校验了");
					return true;
				} else{
					//如果验证失败
					//返回到登录界面
					//          System.out.println("权限校验对了");
					//          response.sendRedirect("account/login");
					return false;
				}
			}
		} else{
			return true;
		}
	}
}
3. インターセプターを構成します: 次のコードを *-servlet.xml に追加する必要があります。

構成ファイル

をカスタマイズした場合は、定義した構成ファイルに直接それを置くこともできます

<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>
。 注: デフォルトを RequestMappingHandlerMapping に変更し、RequestMappingHandlerAdapter の Bean を追加する必要があります Tomcat を再起動するだけです、

注意: メソッドに認証が必要な場合は、メソッドに @Auth をマークするだけで済みます。クラスのすべてのメソッドに認証が必要な場合は、クラスに @Auth をマークするだけです。

次に、メソッド インターセプターが静的リソースを一緒にインターセプトする必要があります。たとえば、次のようにします。適切なメソッドがある場合は、それを追加します。 752432995 と話し合ってください

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.png</url-pattern>
 </servlet-mapping>
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

PHP で JSONAPI を使用する方法


zTree のツリー メニューを使用する手順の詳細な説明

以上がspringmvc はアノテーションインターセプターを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。