ホームページ  >  記事  >  Java  >  Javaを使用してWebサイトのログイン確認コードを取得する方法

Javaを使用してWebサイトのログイン確認コードを取得する方法

PHPz
PHPz転載
2023-05-10 18:28:061569ブラウズ

検証コードの生成

この効果は、easy-captcha ツールキットを使用して実現されます。まず、関連する依存関係を pom.xml に追加する必要があります。コードは次のとおりです:

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

Verificationコード形式

easy-captcha 検証コード ツールは、GIF、中国語、算術、その他の型をサポートしており、これらは次のインスタンス オブジェクトを通じて実装されます:

  • SpecCaptcha (PNG 型静的)画像検証コード)

  • GifCaptcha (Gif タイプ画像検証コード)

  • ChineseCaptcha (GIF タイプ中国語画像検証コード)

  • ArithmeticCaptcha (算術型画像検証コード)

文字の種類は次の種類に分類されます:

  • TYPE_DEFAULT:数字と文字の混合

  • TYPEONLYNUMBER: 純粋な数字

  • 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

フロントエンドの実装です。ロジック

静的ディレクトリに新しい 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を使用してWebサイトのログイン確認コードを取得する方法" >
</body>
</html>

バックエンド検証コード パス/kaptcha にアクセスします。検証コードは次の形式です。写真。 onclick メソッドは、ラベルをクリックしたときに検証コードの表示を動的に切り替えることができます。

Spring Boot プロジェクトを開始し、ブラウザを開いてアドレスを入力します:

http://localhost:8080/kaptcha.html

結果は次のようになります:

Javaを使用してWebサイトのログイン確認コードを取得する方法#検証コードの検証

バックエンド コード

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を使用してWebサイトのログイン確認コードを取得する方法" >
 


<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>

効果

Javaを使用してWebサイトのログイン確認コードを取得する方法

Javaを使用してWebサイトのログイン確認コードを取得する方法

以上がJavaを使用してWebサイトのログイン確認コードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。