Hutool-captcha 是 Hutool 工具包中的一个模块,主要用于生成和验证各种类型的验证码。Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低了相关API的学习成本,提高了工作效率,使Java拥有函数式语言般的优雅。在Hutool工具包中,验证码功能位于cn.hutool.captcha
包中,其核心接口为ICaptcha
。
ICaptcha接口方法
- createCode:创建验证码,实现类需同时生成随机验证码字符串和验证码图片。
- getCode:获取验证码的文字内容。
- verify:验证验证码是否正确,建议忽略大小写。
- write:将验证码写出到目标流中。
以下为springBoot项目中使用Hutool-captchat生成验证码并使用验证码的流程,主要有以下步骤
一、导入依赖
在项目的pom.xml中加入依赖, 代码如下:
<!-- 验证码 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-captcha</artifactId>
<version>5.8.7</version>
</dependency>
二、控制类
编写控制类CommonController生成验证码,并存入会话中,在后端同用户输入的验证码进行验证,代码如下所示:
@Controller
public class CommonController {
@GetMapping("/common/kaptcha")
public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
httpServletResponse.setHeader("Cache-Control", "no-store");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.setContentType("image/png");
ShearCaptcha shearCaptcha= CaptchaUtil.createShearCaptcha(150, 30, 4, 2);
// 验证码存入session
httpServletRequest.getSession().setAttribute("verifyCode", shearCaptcha);
// 输出图片流
shearCaptcha.write(httpServletResponse.getOutputStream());
}
三、登录前端页面
编写前端的html页面,整个页面采用thymeleaf模板进行前后端数据传送,其主要代码如下所示:
<form th:action="@{/admin/login}" method="post">
<div>
<div>
<input type="text" name="verifyCode" placeholder="请输入验证码" required="true">
</div>
<div>
<img alt="单击图片刷新!" th:src="@{/common/kaptcha}"
"this.src='/common/kaptcha'">
</div>
</div>
<div>
<button type="submit">登录</button>
</div>
</form>
四、后端验证码验证
编写后端控制类,以处理前端页面提交的验证码,并进行验证,主要代码如下所示:
@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";
}
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » SpringBoot之hutool-captcha生成验证码
发表评论 取消回复