Vorwort:
In Bezug auf die Einführung von Kaptcha und die Integration von Spring Kaptcha habe ich in einem anderen Artikel ausführlich erklärt. Bitte beziehen Sie sich auf: Spring Kaptcha -Verifizierungscode.
In diesem Artikel werden zwei Möglichkeiten zur Integration von Springboot in Kaptcha eingeführt.
Entwicklungstools und -technologien:
1. Idee 2017
2. Springboot 2.0.2
3. Kaptcha
Offiziell beginnen:
Methode 1: Konfigurieren Sie über Kapaptcha.xml
1. Erstellen Sie eine neue Spring Initializr mit Idee
2. Fügen Sie Kaptscha -Abhängigkeiten hinzu:
<!-Kaptcha-Verifizierungscode-> <De vor Ort> <gruppe> com.github.penggle </Groupid> <artifactId> Kaptcha </artifactid> <version> 2.3.2 </Version> </abhängig>
3. Erstellen Sie eine neue Kaptcha.xml unter Ressourcen mit folgenden Inhalten:
Kaptcha.xml
<? XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-Captcha bean-> <lean id = "-" adocial "> <Bean> <lean id =" "> <Bean> <Dean ="> <Bean> <Dean = "> <Bean> <Dean =" " <constructor-arg type = "java.util.Properties"> <!-Setzen Sie die Kapitscha-Eigenschaften-> <props> <prop key = "waptcha.border"> yes </prop> <propt key = "Kaptcha.border.color"> 105,179,90 </props> </props> </props> </props> </props> </props> </propus> </propus> </props> < key="kaptcha.textproducer.font.color">blue</prop> <prop key="kaptcha.image.width">100</prop> <prop key="kaptcha.image.height">50</prop> <prop key="kaptcha.image.height">50</prop> <prop key="kaptcha.image.height">50</prop> <Prop 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 KEY = "KAPTCHA.TEXTPRODUCER.CHAR.LANGEN"> 4 </prop> <Prop Key = "Kaptcha.TextProducer.font.names"> Song -Schriftart, Kai -Schriftart, Microsoft Yahei </prop> <prop KEY = "KAPTCHA.TEXTPRODUCER.CHAR.STRING"> 0123456789ABCEFGHIJKLMNOPQRSTUVWXYZ </prop> <prop key = "Kaptcha.obscurificator.impl"> com.google.captcha.impl.waterRipple </propriply KEY = "KAPTCHA.NOISE.COLOR"> Black </prop> <prop key = "kaptcha.noise.impl"> com.google.code.kaptcha.impl.DefaultNoise </prop> <prop key = "Kaptcha.background.clar.from"> 185,56,213 </propus> </props KEY = "Kaptcha.background.clear.to"> White </prop> <prop key = "waptcha.textproducer
Hinweis: Der Inhalt in Kaptcha.xml entspricht tatsächlich dem Inhalt in Spring-Kaptcha.xml, wenn Spring Kaptcha integriert. Dies bedeutet, dass Sie Kaptcha an das Feder -Container -Management übergeben, einige Eigenschaften festlegen und dann bei Bedarf direkt injizieren.
4. Laden Sie Kaptcha.xml:
Fügen Sie @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}), fügen Sie diese Annotation hinzu, Springboot lädt die Kaptcha.xml -Datei. Beachten Sie, dass der Pfad von Kaptcha.xml nicht falsch geschrieben werden sollte, der Klassenpfad ist hier das Ressourcenverzeichnis.
5. Schreiben Sie einen Controller, um den Verifizierungscode zu generieren:
CodEcontroller.java
@ControllerPublic Class codEcontroller {@autowired Private Produzent CaptchaproDucer = null; @RequestMapping ("/waptcha") public void getKaptchaimage (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst eine Ausnahme aus {httpSession session = request.getSession (); response.setDateHeader ("läuft", 0); response.setheader ("cache-control", "No-Store, No-Cache, Must-Revalidate"); response.addHeader ("cache-control", "post-Check = 0, pre-Check = 0"); response.setheader ("pragma", "no-cache"); Antwort.SetContentType ("Image/JPEG"); // Verifizierungscode -Zeichenfolge erzeugen captext = captchaproDucer.CreateText (); Session.SetAttribute (Constants.kaptcha_Session_Key, Captext); // BufferedImage in den Client bi = captchaproDucer.Createimage (Captext) schreiben; ServLetOutputStream out = Antwort.getOutputStream (); Imageio.write (bi, "jpg", out); probieren {out.flush (); } endlich {out.close (); }}}HINWEIS: Injizieren Sie die gerade in Kaptcha.xml konfigurierte Bean in diesen Controller -Pfad, und dann können Sie sie verwenden, um den Verifizierungscode zu generieren und den Bestätigungscode an den Client auszugeben. Denken Sie an die Route dieser Klasse, die SRC des Verifizierungscode der Front-End-Seite muss auf diese Route verweisen.
6. Erstellen Sie ein neues Vergleichscode -Vergleichstool:
Codeutil.java
public class codeutil { / ** * den erhaltenen Parameter Front-End in String-Typ konvertieren * @param request * @param key * @return * / public static String getString (httpServletRequest-Anforderung, String-Taste) {try {String result = request.getParameter (Key); if (result! = null) {result = result.trim (); } if ("". Equals (Ergebnis)) {result = null; } Rückgabeergebnis; } catch (Ausnahme e) {return null; }} /** * Überprüfung des Verifizierungscodes * @param request * @return * /public static boolean checkverifyCode (httpServletRequest Request) {// Die generierte Verifizierungscode String verifyCodeexpect = (String) request.getSession (). // Erhalten Sie den von der Benutzerzeichenfolge befragten Verifizierungscode verifyCodeactual = codeutil.getString (Anfrage, "verifyCodeactual"); if (verifyCodeactual == null ||! verifyCodeactual.equals (verifyCodeexpected)) {return false; } Return true; }}HINWEIS: Diese Klasse wird verwendet, um den generierten Verifizierungscode mit dem vom Benutzer eingegebenen Verifizierungscode zu vergleichen. Der generierte Verifizierungscode wird automatisch zur Sitzung hinzugefügt und die Benutzereingabe wird durch GETParameter erhalten. Beachten Sie, dass der Schlüsselwert von GetParameter mit dem Namenswert des Verifizierungscode auf der Seite übereinstimmt.
7. Verwenden Sie den Verifizierungscode:
①Controller
HelloWorld.java
@RestControllerPublic Class } else {return "Hallo, Welt"; }}} ② Seite
Hallo.html
<! DocType html> <html Lang = "en"> <head> <meta charset = "utf-8"> <title> title </title> <script type = "text/javaScript"> Funktion refresh () {document.getElementById ('captcha_img'). Src = "/kaptcha?"+Math.random (). } </script></head><body><form action="/hello" method="post"> Verification code: <input type="text" placeholder="Please enter verification code" name="verifyCodeActual"> <div> <img id="captcha_img" onclick="refresh()" src="/kaptcha" /> </div> <input type="submit" value="submit" /> </form> </body> </html>HINWEIS: Der Verifizierungscode ist im Wesentlichen ein Bild. Verwenden Sie daher das <Meeng> -Tag und dann src = "/waptcha", um auf die Route des Controllers zu verweisen, die den Verifizierungscode generiert. Rufen Sie den JS-Code über onclick = "respirsh ()" an, um die Funktion der Klick-to-Switch zu erkennen. Achten Sie auf den Wert des Namens in <input name = "verifyCodeactual">, und der Schlüsselwert, der beim Erhalten des vom Benutzer über die Anforderungsmethode des Benutzers eingegebenen Bestätigungscode in Codeutil übergeben wird.
8. Test:
Geben Sie den richtigen Verifizierungscode ein
Überprüfung verabschiedet
Geben Sie den falschen Verifizierungscode ein
Überprüfung fehlgeschlagen
Methode 2: Konfigurieren Sie Kaptcha über die Konfigurationsklasse
1. Konfigurieren Sie Kaptcha
Im Vergleich zu Method eins erhöht sich eins und zwei ab.
reduzieren:
①Delete Kaptcha.xml ②Delete @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}) Annotation in der Startklasse
Zunahme:
① Erstellen Sie eine neue Kaptchaconfig -Konfigurationsklasse, der Inhalt lautet wie folgt:
Kaptchaconfig.java
@ConfigurationPublic Class Kaptchaconfig {@Bean public defaultkaptcha getDefaultkaptcha () {defaultkaptcha captchaproDucer = new defaultkaptcha (); Eigenschaften Eigenschaften = neue Eigenschaften (); Properties.SetProperty ("Kaptcha.Border", "Ja"); Properties.SetProperty ("Kaptcha.Border.Color", "105,179,90"); Properties.setProperty ("Kaptcha.TextProducer.Font.Color", "Blue"); 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 (Eigenschaften); captChaproDer.setConfig (config); return captchaproducer; }}HINWEIS: Diese Klasse wird verwendet, um Kaptcha zu konfigurieren, was in der Methode 1. Kaptcha in den IOC -Container entspricht, dann mit den festgelegten Eigenschaften zu einer Instanz zurückkehren und schließlich in den Codecontroller injiziert werden. Sie können es verwenden, um einen Verifizierungscode im CodeController zu generieren. Achten Sie besonders auf die Rückgabe Captchaproducer; Der Name des Captchaproducer im privaten Hersteller captchaproDucer = null; sonst wird die Bohne nicht geladen.
2. Test:
Geben Sie den richtigen Verifizierungscode ein:
Überprüfung verabschiedet
Geben Sie den falschen Verifizierungscode ein
Überprüfung fehlgeschlagen
Um zu erklären, dass die Verifizierungscodes der zweimal basierend auf zwei Methoden generiert werden, werden die Verifizierungscodes der ersten und zweiten Methoden unterschiedliche Attribute festgelegt. Aus dem Bild können wir sehen, dass die Farben, Interferenzleitungen, Hintergründe usw. der Verifizierungscodes der beiden Mal unterschiedlich sind.
Zusammenfassen:
1. Prozesssortierung:
Egal in welchem Weg, Sie sollten zuerst Kaptcha in den Frühlingsbehälter hinzufügen, dh es sollte eine Kaptcha -Bohne geben. Erstellen Sie dann einen neuen Controller und injizieren Sie die Kaptcha -Bohne in den Controller, um Überprüfungscodes zu erzeugen. Dann gibt es eine Werkzeugklasse, die den Überprüfungscode vergleicht und die Tool -Klasse im Test -Controller zum Vergleich des Verifizierungscodes aufruft. Auf der Front-End-Seite müssen Sie schließlich nur <img src = "/生成验证码的controller的路由"> um den Verifizierungscode zu erhalten. Durch Hinzufügen eines Klickereignisses zu diesem IMG -Tag können Sie feststellen, dass "Klicken Sie auf den Überprüfungscode" klicken ".
2. Vergleich mit der Frühlingsintegration Kaptcha
Spring Integration Kaptcha führt auch zwei Methoden ein. Die Konfiguration ist am einfachsten in web.xml, und es ist nicht erforderlich, einen Controller zu schreiben, der den Verifizierungscode generiert. Verwenden Sie auf der Seite SRC, um auf den <url-muster> Wert des Kaptchas Servlet in web.xml zu verweisen.
Beide Methoden der Springboot -Integration von Kaptcha ähneln der zweiten Methode der Spring -Integration von Kaptcha. Sie werden verwendet, um Bohnen zuerst zu konfigurieren und dann Controller zu generieren, um Überprüfungscodes zu erzeugen. Das Front-End verwendet SRC, um auf diesen Controller zu verweisen. Der Unterschied besteht darin, dass der Controller, der Überprüfungscodes erzeugt, /xxx ist, dann src = "xxx.jpg", wenn Springboot in der Integration von Kaptcha src = "/xxx"。
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.