Note d'utilisationAOP+L'annotation personnalisée complète la vérification des permissions de l'interface,Les codes sont les suivants::

pomFichier Ajouter les dépendances requises:

1 <dependency>
2 <groupId>org.aspectj</groupId>
3 <artifactId>aspectjrt</artifactId>
4 <version>1.8.9</version>
5 </dependency>
6 <dependency>
7 <groupId>org.springframework.boot</groupId>
8 <artifactId>spring-boot-starter-aop</artifactId>
9 </dependency>

Personnaliser d'abord les [email protected],Les paramètres requis peuvent être définis dans l'annotation:

 1 package com.itcq.aop;
2
3 import java.lang.annotation.*;
4
5 //Définir la portée des annotations disponibles
6 @Target({ElementType.TYPE, ElementType.METHOD})
7 @Retention(RetentionPolicy.RUNTIME)
8 @Documented
9 public @interface MyAnnotation {
10
11 String name();
12 }

Définir l'annotation de résolutionMyAnnotationService,Logique pour compléter la vérification des permissions d'interface, C'est ici que j'obtiens la demande d'interface headerDansuser_nameParamètres,Effectuer la vérification:

 1 package com.itcq.aop;
2
3 import lombok.extern.slf4j.Slf4j;
4 import org.aspectj.lang.ProceedingJoinPoint;
5 import org.aspectj.lang.Signature;
6 import org.aspectj.lang.annotation.Around;
7 import org.aspectj.lang.annotation.Aspect;
8 import org.aspectj.lang.annotation.Pointcut;
9 import org.springframework.stereotype.Component;
10 import org.springframework.web.context.request.RequestContextHolder;
11 import org.springframework.web.context.request.ServletRequestAttributes;
12
13 import javax.servlet.http.HttpServletRequest;
14
15 @Aspect
16 @Component
17 @Slf4j
18 public class MyAnnotationService {
19
20 //L'expression point - cut détermine si la coupe est annotée ou pour toutes les classes et méthodes sous un chemin,La méthode doit être de retournervoidType
21 @Pointcut("@annotation(com.itcq.aop.MyAnnotation)")
22 private void roleCheckCut() {};
23
24 //Définit la logique de traitement de la section.C'est - à - dire que la méthode a ajouté@MyAnnotationNotes,La vérification des permissions sera effectuée
25 @Around("roleCheckCut()")
26 public Object operateAuth(ProceedingJoinPoint pjp) throws Throwable {
27
28 //Imprimer le journal
29 Signature signature = pjp.getSignature();
30 String className = pjp.getTarget().getClass().getSimpleName();
31 String methodName = signature.getName();
32 log.info("className:{},methodName:{}", className, methodName);
33
34 //Obtenir une demande d'interfaceheaderDansuser_nameParamètres,Effectuer la vérification
35 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
36 String userName = request.getHeader("user_name");
37 //Ici, oui.ApolloConfigurer les rôles qui peuvent être libérés
38 if (!"hwy".equals(userName)) {
39 throw new Exception(userName+"La vérification des permissions a échoué");
40 }
41 return pjp.proceed();
42 }
43 }

Enfin,controllerÉcrire des méthodes d'essai en couches,UtilisationpostmanInterface d'essai:

 1 package com.itcq.controller;
2
3 import com.itcq.aop.MyAnnotation;
4 import com.itcq.service.TestService;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.web.bind.annotation.GetMapping;
7 import org.springframework.web.bind.annotation.RequestHeader;
8 import org.springframework.web.bind.annotation.RequestParam;
9 import org.springframework.web.bind.annotation.RestController;
10
11 @RestController
12 public class TestController {
13
14 @Autowired
15 private TestService testService;
16
17 @GetMapping("/test")
18 @MyAnnotation(name = "HWY")
19 public String testMethod(@RequestHeader(name = "user_name") String userName,
20 @RequestParam(name = "user_age") Integer userAge) {
21
22 return testService.testMethod(userName, userAge);
23 }
24 }

Les résultats des tests pour deux paramètres de requête différents sont les suivants:

Résultat du retour lorsque le paramètre est correct:

Résultat du retour si le paramètre est incorrect,Erreur d'interface,Sortie de la console:

Peut être trouvé en utilisantAOP+Le formulaire d'annotation personnalisé complète la vérification des permissions de l'interface,Bien sûr, ce n'est qu'une application rudimentaire,AOP+Les annotations personnalisées ont encore beaucoup à explorer.

UtiliserAOP+ Commentaire personnalisé terminé spring boot Plus d'articles sur la vérification des permissions d'interface pour

  1. redisSerrure distribuée-spring boot aop+ Implémenter des serrures distribuées avec des annotations personnalisées

    Prends ça redisSerrure distribuée-java Fin de la mise en œuvre ,Réalisationaop+Commentaires personnalisés Réaliser des serrures distribuées 1.Pourquoi Serrures distribuées déclaratives Les serrures distribuées programmées sont mises en œuvre individuellement à chaque mise en œuvre , Mais lorsque le volume d'affaires est important et que les fonctions sont complexes , Il ne fait aucun doute que l'utilisation de serrures programmables distribuées ...

  2. UtilisationSpring AOP Vérification personnalisée des journaux de résolution d'annotation et des signatures

    Réimpression:http://www.cnblogs.com/shipengzhi/articles/2716004.html Un.. Problèmes à résoudre SectionAPI Il y a des paramètres de signature (signature),PassportTout d'abord, ...

  3. spring AOP Comment personnaliser l'annotation pour la gestion des journaux

    Continuer à réaliser aujourd'hui AOP, Je pense personnellement que c'est le plus flexible , Une approche évolutive , Prenez la gestion des journaux ,AvecSpring AOP Personnaliser le formulaire d'annotation pour la gestion des journaux .Ne dis pas de bêtises,Tout droit!!! Encore une fois sur la configuration . Inappli ...

  4. spring AOPCommentaires personnalisés Mise en œuvre de la gestion des journaux

    Continuer à réaliser aujourd'hui AOP, Je pense personnellement que c'est le plus flexible , Une approche évolutive , Prenez la gestion des journaux ,AvecSpring AOP Personnaliser le formulaire d'annotation pour la gestion des journaux .Ne dis pas de bêtises,Tout droit!!! Encore une fois sur la configuration . Inappli ...

  5. (Tourne.)UtilisationSpring AOP Vérification personnalisée des journaux de résolution d'annotation et des signatures

    Un.. Problèmes à résoudre SectionAPI Il y a des paramètres de signature (signature),Passport Vérifiez d'abord la signature , .La méthode d'implémentation ne sera exécutée que si la vérification est réussie . Le premier mode de réalisation(Origin): Écrivez le Code de vérification dans l'interface qui nécessite la vérification de signature ,Par exemple: ...

  6. SpringBootSérie(XIII.) Traitement uniforme des journaux ,logback+slf4j AOP+Commentaires personnalisés,On y va.!

    Excellente recommandation du passé SpringBootSérie(Un.)ideaNouveauSpringbootProjets SpringBootSérie(2.)Introduction aux connaissances springBootSérie(Trois)Détails du profil SpringBootSérie(Quatre)we ...

  7. ssm+redisIntégration(Adoptionaop Comment personnaliser l'annotation )

    Ce programme s'appuie sur aop Personnaliser les annotations pour créer redisMécanisme de mise en cache. 1. Créer une classe d'annotation personnalisée package com.tp.soft.common.util; import java.lang.annotation.E ...

  8. spring mvcNotes etspring bootNotes

    1 spring mvcEtspring bootLa relation entre spring bootContientspring mvc.Alors...,spring mvc Note de spring boot Est - ce toujours utilisable ? spring b ...

  9. spring boot rest Intégration des interfaces spring security(1) - Configuration minimaliste

    Spring Boot Tutoriel d'intégration Spring Boot Introduction Spring Boot Environnement de développement(Eclipse) Spring Boot Hello World (restfulInterface)Exemple sp ...

  10. spring boot rest Intégration des interfaces spring security(2) - JWTConfiguration

    Spring Boot Tutoriel d'intégration Spring Boot Introduction Spring Boot Environnement de développement(Eclipse) Spring Boot Hello World (restfulInterface)Exemple sp ...

Recommandation aléatoire

  1. Machine virtuellecentos6.5 --hadoop2.6Construction d'un environnement de Cluster

    Un..Description de l'environnement Machine virtuelle:virtualBox Système:centos6.5,64Bits Cluster:3Noeuds master 192.168.12.232 slave01 192.168.12.233 slave02 ...

  2. ACJournal intime—— Anneau de caractères openjudge 1.7 30

    30: Anneau de caractères Durée totale:  1000ms Limite de mémoire:  65536kB Description Il y a deux anneaux de caractères .Veuillez écrire un programme, Calcule la longueur de la plus longue chaîne publique continue sur ces deux anneaux de caractères .Par exemple,String“ABCEFAGADEGKA ...

  3. C# Avec Microsoft Expression Encoder Réaliser l'enregistrement à l'écran

    Dans le développement quotidien, Nous avons souvent besoin d'enregistrements à l'écran .InC#En passant parExpression EncoderDeSDK Pour répondre à ce besoin .Il faut d'abord téléchargerExpression Encoder SDK,Code de mise en œuvre: priva ...

  4. sql-select

    SELECT Sélectionnez les données dans les tableaux de la base de données Directives SELECT " Nom du champ " FROM "Nom du tableau"; Par exemple:RequêteStore_Information Tous les St ...

  5. Construire sa propreYumSource

    Dehttp://kicklinux.com/setup-yum-repos-server/ Les ordres reposync Peut être synchronisé directement yumSource Par exemple:/etc/yum.repos.d/cloudera-cdh ...

  6. Voilà.tableDéfinir la barre de défilement

    <div  scroll="no" style="width:1200px;overflow-x:scroll;overflow-y:hidden"> ...

  7. MavenLe vrai combatQuick Start

    Introduction Maven Est un outil de construction extrêmement puissant , Peut nous aider à automatiser le processus de construction , Du nettoyage .Compiler. Test to generate Report , Jusqu'à l'emballage et le déploiement .AdoptionMaven, Il suffit d'entrer des commandes simples (Par exemple:mvn clean i ...

  8. Depuis le début 【 Illustration pour la machine virtuelle iOSEnvironnement de développement】 (Tourne.)

    1.TéléchargerMac OSX10.9. Cliquez pour télécharger 2.TéléchargerVMware Workstation 10,Cliquez pour télécharger, La page contient le numéro de série .InstallationVM. 3.VM10-MacOSPatch. Pour créer une machine virtuelle Apple . InstallationVMNon. ...

  9. CQuestions d'entrevue

    1.sizeof()Etstrlen()Utiliser? La réponse: 1. Défini à partir de la fonction ,strlenFonction, Pour trouver la longueur de la chaîne ,sizeof La fonction est utilisée pour rechercher l'occupation de mémoire d'une variable ou d'un type de variable spécifié Taille: 2.sizeofC'est l'opérateur ...

  10. shell testEtfind Résolution de l'Instance de commande

    shell testEtfind Résolution de l'Instance de commande En bas\build\core\product.mk Partie pertinente pour apprendre define _find-android-products-files $(shell t ...