Maison > interface Web > js tutoriel > le corps du texte

springmvc implémente l'intercepteur d'annotations

php中世界最好的语言
Libérer: 2018-04-13 17:05:31
original
1390 Les gens l'ont consulté

Cette fois, je vais vous présenter springmvc pour implémenter l'intercepteur d'annotations. Quelles sont les précautions pour que springmvc implémente l'intercepteur d'annotations. Ce qui suit est un cas pratique, jetons un coup d'œil.

Lorsque j'écrivais un projet avec SpringMvc récemment, j'ai rencontré un problème, qui était le problème d'authentification de la méthode. J'ai travaillé sur ce problème pendant une journée et je l'ai finalement résolu. à la solution ci-dessous

Exigences du projet : Lorsque l'authentification est requise, il me suffit de l'étiqueter. Par exemple, les opérations qui ne peuvent être effectuées que par connexion utilisateur sont généralement effectuées lorsque nous exécutons la méthode. l'identité de l'utilisateur ajoute beaucoup de charge de travail et réinvente la roue. Avec les annotations Java, il vous suffit de mettre une étiquette sur la méthode qui nécessite une authentification :

Solution :

 1. Créez d'abord une classe d'annotation :

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}
Copier après la connexion

2. Créez un autre intercepteur :

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;
		}
	}
}
Copier après la connexion

3. Configurez l'intercepteur : Vous devez ajouter le code suivant à *-servlet.xml Si vous avez personnalisé le fichier de configuration , vous pouvez également le mettre directement dans le fichier de configuration que vous avez défini

<.>
<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>
Copier après la connexion
Remarque : Vous devez modifier la valeur par défaut en RequestMappingHandlerMapping et ajouter le bean de RequestMappingHandlerAdapter

Redémarrez simplement Tomcat,

Rappel chaleureux : si une méthode nécessite une authentification, il vous suffit de marquer @Auth sur la méthode. Si toutes les méthodes de la classe nécessitent une authentification, il vous suffit de marquer @Auth sur la classe.

Ensuite, la question se pose : l'intercepteur de méthode interceptera les ressources statiques ensemble. Nous devons intercepter les fichiers statiques dans Tomcat. Par exemple : ma solution est de le configurer dans web.xml. . Discutez avec 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>
Copier après la connexion
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser JSONAPI en PHP

Étapes détaillées pour utiliser le menu arborescent de zTree

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal