Hutool-captcha 是 Hutool 工具包中的一个模块,主要用于生成和验证各种类型的验证码。
Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低了相关API的学习成本,提高了工作效率,使Java拥有函数式语言般的优雅。
在Hutool工具包中,验证码功能位于cn.hutool.captcha包中,其核心接口为ICaptcha。
ICaptcha接口方法
createCode:创建验证码,实现类需同时生成随机验证码字符串和验证码图片。
getCode:获取验证码的文字内容。
verify:验证验证码是否正确,建议忽略大小写。
write:将验证码写出到目标流中。
以下为springBoot项目中使用Hutool-captchat生成验证码并使用验证码的流程,主要有以下步骤
一、导入依赖
<!-- 验证码 --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-captcha</artifactId> <version>5.8.7</version> </dependency>
二、控制类
import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.ShearCaptcha; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Controller public class Captcha { @GetMapping("utils/captcha") public void getCaptcha(HttpServletResponse response, HttpServletRequest request) throws IOException { response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/png"); ShearCaptcha shearCaptcha= CaptchaUtil.createShearCaptcha(150, 30, 4, 2); // 验证码存入session request.getSession().setAttribute("verifyCode", shearCaptcha); // 输出图片流 shearCaptcha.write(response.getOutputStream()); } }
三、登录前端页面
<img src="/utils/captcha" onclick="this.src='/utils/captcha?id='+Math.random();" />
四、后端验证码验证
@Controller @RequestMapping("/admin") public class AdminController { @PostMapping(value = "/login") public String login(@RequestParam("userName") String userName, @RequestParam("password") String password, @RequestParam("verifyCode") String verifyCode, HttpSession session) { ShearCaptcha shearCaptcha = (ShearCaptcha) session.getAttribute("verifyCode"); if (shearCaptcha == null || !shearCaptcha.verify(verifyCode)) { session.setAttribute("errorMsg", "验证码错误"); return "admin/login"; } return "admin/index"; } }