Heim  >  Artikel  >  Java  >  So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

PHPz
PHPznach vorne
2023-05-10 18:28:061568Durchsuche

Verifizierungscode-Generierung

Dieser Effekt wird mit dem Easy-Captcha-Toolkit erreicht. Zuerst müssen Sie relevante Abhängigkeiten zu pom.xml hinzufügen. Der Code lautet wie folgt:

<dependency>
    <groupId>com.github.whvcse</groupId>
    <artifactId>easy-captcha</artifactId>
    <version>1.6.2</version>
</dependency>

Verifizierungscode-Format

Easy-Captcha-Verifizierungscode-Tool unterstützt GIF, Chinesisch, Arithmetik und andere Typen, die durch die folgenden Instanzobjekte implementiert werden:

  • SpecCaptcha (statischer Bildverifizierungscode vom Typ PNG)

  • GifCaptcha (Bildverifizierungscode vom Typ GIF)

  • ChineseCaptcha (GIF-Typ Chinesischer Bildbestätigungscode)

  • ArithmeticCaptcha (arithmetischer Bildbestätigungscode)

Zeichentypen sind in die folgenden Typen unterteilt:

  • TYPE_DEFAULT: gemischte Zahlen und Buchstaben

  • TYPEONLYNUMBER: reine Zahlen

  • TYPEONLYCHAR: Reine Buchstaben

  • TYPEONLYUPPER: Reine Großbuchstaben

  • TYPEONLYLOWER: Reine Kleinbuchstaben

  • TYPENUMAND_UPPER: Gemischte Zahlen und Großbuchstaben

Implementierung von Back- Endlogik

package com.yanx.controller;
 
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
@Controller
public class KapchaController {
    @GetMapping("/kaptcha")
    public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.setHeader("Cache-Control","no-store");
        httpServletResponse.setHeader("Pragma","no-cache");
        httpServletResponse.setDateHeader("Expires",0);
        httpServletResponse.setContentType("image/gif");
 
        //三个参数分别为宽、高、位数
        SpecCaptcha captcha=new SpecCaptcha(75,30,4);
 
        //设置类型为数字和字母混合
        captcha.setCharType(Captcha.TYPE_DEFAULT);
 
        //设置字体
        captcha.setCharType(Captcha.FONT_9);
 
        //验证码存入session
        httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());
 
        //输出图片流
        captcha.out(httpServletResponse.getOutputStream());
    }
 
}

Neu Controller hier Die Standardmethode Kaptcha() wird von dieser Methode abgefangen und verarbeitet: /kaptcha

Implementierung der Front-End-Logik

Erstellen Sie eine neue kaptcha.html-Seite im statischen Verzeichnis

Zugriff auf den Back-End-Bestätigungscodepfad/Kaptcha, Bestätigungscode in Bildform. Die Onclick-Methode kann dynamisch wechseln, um den Bestätigungscode anzuzeigen, wenn auf das Etikett geklickt wird.

Starten Sie das Spring Boot-Projekt, öffnen Sie den Browser und geben Sie die Adresse ein:

http://localhost:8080/kaptcha.html

Der Effekt ist wie folgt:

So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

Verifizierung des Bestätigungscodes

Back-End Code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>验证码</title>
</head>
<body>
 <img  src="/kaptcha" onclick="this.src=&#39;/kaptcha?t=new Date()&#39;" alt="So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten" >
</body>
</html>

Front-End-Code

package com.yanx.controller;
 
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
 
@Controller
public class KapchaController {
    @GetMapping("/kaptcha")
    public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
        httpServletResponse.setHeader("Cache-Control","no-store");
        httpServletResponse.setHeader("Pragma","no-cache");
        httpServletResponse.setDateHeader("Expires",0);
        httpServletResponse.setContentType("image/gif");
 
        //三个参数分别为宽、高、位数
        SpecCaptcha captcha=new SpecCaptcha(75,30,4);
 
        //设置类型为数字和字母混合
        captcha.setCharType(Captcha.TYPE_DEFAULT);
 
        //设置字体
        captcha.setCharType(Captcha.FONT_9);
 
        //验证码存入session
        httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());
 
        //输出图片流
        captcha.out(httpServletResponse.getOutputStream());
    }
 
    @GetMapping("/verify")
    @ResponseBody
    public String verify(@RequestParam("code") String code, HttpSession session){
        if(StringUtils.isEmpty(code)){
            return "验证码不能为空";
        }
        String kapchaCode = session.getAttribute("verifyCode")+"";
        if(StringUtils.isEmpty(kapchaCode)||!code.toLowerCase().equals(kapchaCode)){
            return "验证码输入错误";
        }
        return "验证成功";
    }
}

Effekt

So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

So verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Java, um den Bestätigungscode für die Website-Anmeldung zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen