Java代码如何生成图形验证码(gif、中文、算术)呢?

乔欣 SpringBoot 发布时间:2023-02-18 10:24:20 阅读数:7475 1
下文笔者讲述java代码生成复杂的图形验证码的方法分享,如下所示

图形验证码简介

图形验证码:
    是所有网站都必备的一种验证方式
	 那么如何生成一种验证码,里面可包含(中文、算术)的信息呢?
	 下文将一一道来,如下所示 

java生成图形验证码的实现思路

  可借助EasyCaptcha
   1.引入jar包
   2.定义SpecCaptcha对象即可生成一个随机验证码
例:
 
1.maven项目引入easy-captcha

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

2.SpringBoot项目创建图形验证码
    存入Redis设置缓存时间
	并返回验证码信息

@Controller
public class CaptchaController {

    @Autowired
    private RedisUtil redisUtil;

    @ResponseBody
    @RequestMapping("/vcode/captcha")
    public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
        SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
        String verCode = specCaptcha.text().toLowerCase();
        String key = UUID.randomUUID().toString();
        // 存入redis并设置过期时间为30分钟
        redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
        // 将key和base64返回给前端
        return JsonResult.ok().put("key", key).put("image", specCaptcha.toBase64());
    }

    @ResponseBody
    @PostMapping("/vcode/vaild")
    public JsonResult login(String username,String password,String verCode,String verKey){
        // 获取redis中的验证码
        String redisCode = redisUtil.get(verKey);
        // 判断验证码
        if (verCode==null || !redisCode.equals(verCode.trim().toLowerCase())) {
            return JsonResult.error("验证码不正确");
        }
    }  
}
 
//3.前端使用ajax获取验证码并验证
<img id="imgCode" width="130px" height="48px"/>

<script>
    var verKey;
    // 获取验证码
    $.get('/vcode/captcha', function(res) {
        verKey = res.key;
        $('#imgCode').attr('src', res.image);
    },'json');
 
</script>
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202302/5846.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者