在Spring Boot项目中使用Kaptcha来生成验证码,可以按照以下步骤进行:
1. 添加依赖
首先,你需要在pom.xml
文件中添加Kaptcha的依赖。可以使用如下的Maven坐标:
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version> <!-- 请检查最新版本 -->
</dependency>
2. 创建验证码配置类
然后,创建一个配置类,用于配置Kaptcha的参数。
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha producer() {
Properties properties = new Properties();
properties.setProperty("kaptcha.image.width", "100");
properties.setProperty("kaptcha.image.height", "40");
properties.setProperty("kaptcha.textproducer.font.size", "30");
properties.setProperty("kaptcha.textproducer.char.length", "4");
properties.setProperty("kaptcha.background.clear.from", "white");
properties.setProperty("kaptcha.background.clear.to", "white");
Config config = new Config(properties);
return config.getProducerImpl();
}
}
3. 创建控制器生成验证码
接下来,创建一个控制器,用于处理生成验证码请求。
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
public class CaptchaController {
@Autowired
private DefaultKaptcha producer;
@GetMapping("/captcha")
public void getCaptcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 设置响应类型为图片格式
response.setContentType("image/jpeg");
// 生成验证码文本
String text = producer.createText();
// 将验证码存入session中(可选)
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);
// 生成验证码图像并返回给客户端
ServletOutputStream out = response.getOutputStream();
ImageIO.write(producer.createImage(text), "jpg", out);
try {
out.flush();
} finally {
out.close();
}
}
}
4. 前端展示
你可以在前端通过 <img>
标签来展示生成的验证码,例如:
<img src="/captcha" alt="captcha" />
5. 验证用户输入的验证码
在你的登录或注册逻辑中,你可以从session中获取存储的验证码,并与用户输入进行比对,以验证其正确性。例如:
String sessionCaptcha = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
if (!userInput.equals(sessionCaptcha)) {
throw new RuntimeException("验证码不正确!");
}
以上就是在Spring Boot项目中使用Kaptcha生成和验证验证码的基本步骤。如果有其他需求或问题,请随时询问!
内容由零声教学AI助手提供,问题来源于学员提问