>  기사  >  Java  >  Java를 사용하여 웹사이트 로그인 인증 코드를 받는 방법

Java를 사용하여 웹사이트 로그인 인증 코드를 받는 방법

PHPz
PHPz앞으로
2023-05-10 18:28:061558검색

인증 코드 생성

이 효과는 easy-captcha 툴킷을 사용하여 달성됩니다. 먼저 pom.xml에 관련 종속성을 추가해야 합니다.

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

인증 코드 형식

easy-captcha 인증 코드 도구입니다. GIF, 중국어, 연산 및 기타 유형을 지원하며 다음 인스턴스 개체를 통해 구현됩니다.

  • SpecCaptcha(PNG 유형 정적 사진 인증 코드)

  • GifCaptcha(Gif 유형 사진 인증 코드)

  • ChineseCaptcha(GIF 유형 중국어 사진) 검증 코드)

  • ARITHMETYCAPTCHA (산술 유형 사진 검증 코드)

문장 유형은 다음 유형으로 나뉩니다.

  • TYPEONLYCHAR: 순수 문자

  • TYPEONLYUPPER: 순수 대문자

  • TYPEONLYLOWER: 순수 소문자

  • TYPENUMAND_UPPER: 숫자와 대문자 혼합

  • 구현 백엔드 로직

    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());
        }
     
    }

    여기서 새로운 컨트롤러는 defaultKaptcha() 메소드가 사용됩니다. 이 메소드에 의해 가로채어 처리되는 경로는
  • 프런트엔드 로직 구현

  • 정적 디렉토리에 새로운 kaptcha.html 페이지를 생성하는 코드입니다.
<!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="Java를 사용하여 웹사이트 로그인 인증 코드를 받는 방법" >
</body>
</html>

백엔드 인증코드 경로/kaptcha에 접속하세요. 인증코드는 사진 형태입니다. onclick 메소드는 라벨을 클릭할 때 인증 코드를 표시하도록 동적으로 전환할 수 있습니다.

Spring Boot 프로젝트를 시작하고 브라우저를 열고 주소를 입력하세요: /kaptcha

http://localhost:8080/kaptcha.html

효과는 다음과 같습니다:

확인 코드 확인

백엔드 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 "验证成功";
    }
}

프런트엔드 코드

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>验证码验证</title>
</head>
<body>
 
<img  src="/kaptcha" onclick="this.src=&#39;/kaptcha?d=new Date()&#39;" alt="Java를 사용하여 웹사이트 로그인 인증 코드를 받는 방법" >
 


<input type="text" maxlength="5" id="code" placeholder="请输入验证码"/>
<button id="verify">验证</button>


<p id="verifyResult"></p>
 
</body>
 
<script src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" >
  $(function(){
  //验证按钮点击事件
   $(&#39;#verify&#39;).click(function(){
    var code=$(&#39;#code&#39;).val();
    $.ajax({
      type:&#39;GET&#39;,//方法类型
      url:&#39;/verify?code=&#39;+code,
      success:function(result){
        $(&#39;#verifyResult&#39;).html(result);
      },
      error:function(){
        alert(&#39;请求失败&#39;);
      },
    });
   });
  });
</script>
</html>

EffectJava를 사용하여 웹사이트 로그인 인증 코드를 받는 방법

위 내용은 Java를 사용하여 웹사이트 로그인 인증 코드를 받는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제