Préface:
En ce qui concerne l'introduction de Kaptcha et l'intégration de Spring Kaptcha, j'ai expliqué en détail dans un autre article. Veuillez vous référer à: Code de vérification de Spring Kaptcha.
Cet article introduira deux façons d'intégrer le Springboot dans Kaptcha.
Outils et technologies de développement:
1. IDEA 2017
2. Springboot 2.0.2
3. Kaptcha
Commencez officiellement:
Méthode 1: Configurer via kaptcha.xml
1. Créez un nouveau printemps initializr en utilisant l'idée
2. Ajouter les dépendances de Kaptcha:
<! - Kaptcha Verification Code -> <Dedency> <GroupId> com.github.peggle </proupId> <ArtefactId> kaptcha </retifactive> <version> 2.3.2 </ version> </Dependency>
3. Créez un nouveau kaptcha.xml sous Ressources, avec le contenu suivant:
kaptcha.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: ScheMalation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <! - Générer KaptCha Bean -> <Bean Id = "CaptChapRoDuce <constructor-arg type = "java.util.properties"> <! - Définir les propriétés Kaptcha -> <props> <prop key = "kaptcha.border"> oui </prop> <prop key = "kaptcha.border.color"> 105,179,90 </prop> <proPe Key = "kaptcha.textproducer.font.font" <prop key = "kaptcha.image.width"> 100 </prop> <prop key = "kaptcha.image.height"> 50 </ prop> <prop key = "kaptcha.image.height"> 50 </ prop> <p key = "kaptcha.image.height"> 50 </ prop> <prop. key = "kaptcha.image.height"> 50 </prop> <prop key = "kaptcha. key =" kaptcha.textproducer.font.size "> 27 </prop> <prop key =" kaptcha.session.key "> code </ prop> <prop> KETY =" kaptcha.textproducer.Legth key = "kaptcha.textproducer.font.names"> Song Font, Kai font, Microsoft Yahei </Prop> <prop Key = "kaptcha.textproducer.char.string"> 0123456789abcefghijklmnopqrsvwxyz </prop> <pp> key = "kaptcha.obscurrificator.impl"> com.google.code.kaptcha.impl.waterripple </prop> <prop key = "kaptcha.noise.mplor"> noire </ prop> <pp> key = "kaptcha.background.clear.from"> 185,56,213 </prop> <prop key = "kaptcha.background.clar.to"> blanc </ prop> <prop> clé = "kaptscha.textproduner.char.space"> 3 </prop> </pand> </preintor-arg> </EANT>
Remarque: Le contenu dans kaptcha.xml est en fait le même que le contenu de Spring-kaptcha.xml lorsque le printemps intègre Kaptcha. Cela signifie remettre Kaptcha à la gestion des conteneurs à ressort, définir certaines propriétés, puis injecter directement en cas de besoin.
4. Charge Kaptcha.xml:
Ajoutez @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}), ajoutez cette annotation, Springboot chargera le fichier kaptcha.xml. Notez que le chemin de Kaptcha.xml ne doit pas être écrit de manière incorrecte, le ClassPath est le répertoire des ressources ici.
5. Écrivez un contrôleur pour générer du code de vérification:
CodeController.java
@ControllerPublic Class CodeController {@Autowired Private Producer CAPTCHAPRODUCER = NULL; @RequestMapping ("/ kaptcha") public void getKaptChaimage (request httpservletRequest, réponse httpservletResponse) exception {httpSession session = request.getSession (); réponse.setDateHeader ("expire", 0); Response.sethEader ("Cache-Control", "sans magasin, sans cache, doit-revalider"); Response.Addheader ("Cache-Control", "post-Check = 0, pré-Check = 0"); Response.sethEader ("Pragma", "No-Cache"); réponse.setContentType ("Image / JPEG"); // Générer la chaîne de code de vérification capText = captChaproducer.CreateText (); session.setAttribute (constants.kaptcha_session_key, captext); // Écrivez BufferedImage au client bi = captchaproducer.CreateImage (CapText); ServletOutputStream out = Response.getOutputStream (); ImageIo.write (BI, "JPG", out); essayez {out.flush (); } enfin {out.close (); }}}Remarque: Injectez le bean juste configuré dans kaptcha.xml dans ce chemin de contrôleur, puis vous pouvez l'utiliser pour générer le code de vérification et sortir le code de vérification au client; N'oubliez pas l'itinéraire de cette classe, le SRC du code de vérification de la page frontale doit pointer vers cette voie.
6. Créer un nouvel outil de comparaison de code de vérification:
Codeutil.java
classe publique CodeUtil {/ ** * Convertir le paramètre frontal obtenu en type de chaîne * @param request * @param key * @return * / public static String getString (httpServLetRequest request, string key) {try {String result = request.getParAmter (key); if (result! = null) {result = result.trim (); } if ("". equals (result)) {result = null; } Retour Résultat; } catch (exception e) {return null; }} / ** * Code de vérification Vérification * @param demande * @return * / public static boolean checkVerifyCode (httpservletRequest request) {// Obtenez le code de vérification généré String VerifyCodeEXPECT = (String) request.getSession (). GetAttribute (com.google.code.kaptcha.constants.kaptcha_session_key); // Obtenez le code de vérification entré par la chaîne utilisateur VerifyCodeActual = CodeUtil.getString (request, "VerifyCodeActual"); if (VerifyCodeActual == NULL ||! VerifyCodeActual.equals (VerifyCodeExPected)) {return false; } return true; }}Remarque: Cette classe est utilisée pour comparer le code de vérification généré avec le code de vérification entré par l'utilisateur. Le code de vérification généré sera automatiquement ajouté à la session et l'entrée utilisateur sera obtenue via GetParameter. Notez que la valeur clé de GetParameter doit être cohérente avec la valeur de nom du code de vérification dans la page.
7. Utiliser le code de vérification:
Contrôleur
Helloworld.java
@RestControllerPublic class helloworld {@RequestMapping ("/ Hello") public String Hello (httpServLetRequest request) {if (! Codeutil.checkverifycode (request)) {return "Le code de vérification est incorrect!"; } else {return "Hello, world"; }}} Page
bonjour.html
<! Doctype html> <html lang = "en"> <éread> <meta charset = "utf-8"> <itle> title </ title> <script type = "text / javascript"> function refresh () {document.getElementbyid ('CAPTCHA_IMG'). Src = "/ kaptcha?" + Math.random (); } </ script> </ head> <body> <form action = "/ hello" méthode = "post"> code de vérification: <entrée type = "text" placeholder = "s'il vous plaît entrez du code de vérification" name = "VerifyCodeActual"> <div> <img id = "captcha_img" onclick = "refresh ()" src = "/ kaptcha" /> </ div> /> </ form> </ body> </html>Remarque: Le code de vérification est essentiellement une image, alors utilisez la balise <Mg>, puis utilisez src = "/ kaptcha" pour pointer vers l'itinéraire du contrôleur qui génère le code de vérification; Appelez le code JS via onclick = "Refresh ()" pour réaliser la fonction de clic-interruption; Faites attention à la valeur du nom dans <input name = "VerifyCodeAactual">, et la valeur de clé réalisée lors de l'obtention du code de vérification entré par l'utilisateur via la méthode de demande GetParameter () dans CodeUtil doit être cohérente avec la valeur du nom ici.
8. Test:
Entrez le code de vérification correct
Vérification a été adoptée
Entrez le mauvais code de vérification
Échec de la vérification
Méthode 2: Configurer Kaptcha via la classe de configuration
1. Configurer Kaptcha
Par rapport à la méthode un, une augmente et deux diminue.
réduire:
①Delete kaptcha.xml ②Delete @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}) Annotation sur la classe de démarrage
augmenter:
① Créez une nouvelle classe de configuration KaptChaconfig, le contenu est le suivant:
Kaptchaconfig.java
@Configurationpublic classe kaptchaconfig {@bean public defaultKaptcha getDefaultKaptCha () {defaultKaptCha captchaproducer = new defaultKaptCha (); Propriétés Properties = New Properties (); Properties.SetProperty ("kaptcha.border", "oui"); Properties.SetProperty ("kaptcha.border.color", "105,179,90"); Properties.SetProperty ("kaptcha.textproducer.font.color", "bleu"); Properties.SetProperty ("kaptcha.image.width", "110"); Properties.SetProperty ("kaptcha.image.height", "40"); Properties.SetProperty ("kaptcha.textproducer.font.size", "30"); Properties.SetProperty ("kaptcha.session.key", "code"); Properties.SetProperty ("kaptcha.textproducer.char.length", "4"); Properties.SetProperty ("kaptcha.textproducer.font.names", "Song font, kai font, Microsoft Yahei"); Config config = new Config (Properties); capchaproducer.setConfig (config); retour capchaproducer; }}Remarque: Cette classe est utilisée pour configurer Kaptcha, qui équivaut à kaptcha.xml dans la méthode 1. Ajoutez Kaptcha au conteneur IOC, puis retournez à une instance avec les propriétés définies et enfin injecter dans le codecontroller. Vous pouvez l'utiliser pour générer du code de vérification dans le CodeController. Portez une attention particulière au retour CAPTCHAPRODUCER; Le nom de CAPTCHAPRODUCER dans le producteur privé CAPTCHAPRODUCER = NULL;, sinon le haricot ne sera pas chargé.
2. Test:
Entrez le code de vérification correct:
Vérification a été adoptée
Entrez le mauvais code de vérification
Échec de la vérification
Afin d'expliquer que les codes de vérification des deux fois sont générés sur la base de deux méthodes, les codes de vérification des première et deuxième méthodes sont des attributs différents. Depuis l'image, nous pouvons voir que les couleurs, les lignes d'interférence, les arrière-plans, etc. des codes de vérification des deux fois sont différentes.
Résumer:
1. Tri de processus:
Quelle que soit la façon, vous devriez d'abord ajouter du kaptcha au conteneur à ressort, c'est-à-dire qu'il devrait y avoir un haricot Kaptcha; Créez ensuite un nouveau contrôleur et injectez le haricot Kaptcha dans le contrôleur pour générer des codes de vérification; Ensuite, il existe une classe d'outils qui compare le code de vérification et appelez la classe d'outils dans le contrôleur de test pour la comparaison du code de vérification; Enfin, sur la page frontale, il vous suffit d'utiliser <img src = "/生成验证码的controller的路由"> pour obtenir le code de vérification. En ajoutant un événement de clic à cette balise IMG, vous pouvez réaliser "Cliquez pour changer de code de vérification".
2. Comparaison avec l'intégration de printemps kaptcha
L'intégration de printemps Kaptcha présente également deux méthodes. La configuration est la plus simple dans web.xml, et il n'est pas nécessaire d'écrire un contrôleur qui génère du code de vérification. Dans la page, utilisez SRC pour pointer la valeur <url-sattern> du servlet de Kaptcha dans web.xml.
Les deux méthodes d'intégration de Springboot KAPTCHA sont similaires à la deuxième méthode d'intégration de Kaptcha. Ils sont utilisés pour configurer d'abord les haricots, puis utiliser des contrôleurs pour générer des codes de vérification. Le frontal utilise SRC pour pointer vers ce contrôleur. La différence est que si le contrôleur qui génère des codes de vérification est / xxx, alors src = "xxx.jpg" lorsque le Springboot intégrant kaptcha src = "/xxx"。
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.