SpringBoot集成Easy-Captcha验证码的模板及案例

Gitee:Easy-Captcha

一、SpringBoot统一结果集处理模板

StatusCodeEnum

@Getter
@AllArgsConstructor
public enum StatusCodeEnum {
	/**
	 * 成功
	 */
	SUCCESS(20000, "操作成功"),
	/**
	 * 没有操作权限
	 */
	AUTHORIZED(40300, "没有操作权限"),
	/**
	 * 系统异常
	 */
	SYSTEM_ERROR(50000, "系统异常"),
	/**
	 * 失败
	 */
	FAIL(51000, "操作失败"),
	/**
	 * 参数校验失败
	 */
	VALID_ERROR(52000, "参数格式不正确"),
	/**
	 * 用户名已存在
	 */
	USERNAME_EXIST(52001, "用户名已存在"),
	/**
	 * 用户名不存在
	 */
	USERNAME_NOT_EXIST(52002, "用户名不存在"),
	/**
	 * qq登录错误
	 */
	QQ_LOGIN_ERROR(53001, "qq登录错误"),
	/**
	 * 微博登录错误
	 */
	WEIBO_LOGIN_ERROR(53002, "微博登录错误");

	/**
	 * 状态码
	 */
	private final Integer code;

	/**
	 * 描述
	 */
	private final String desc;
}

CaptchaResult

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CaptchaResult {

	@ApiModelProperty(value = "状态码")
	private Integer code;

	@ApiModelProperty(value = "状态")
	private Boolean flag;

	@ApiModelProperty(value = "返回消息")
	private String message;

	@ApiModelProperty(value = "数据")
	private Map<String, Object> data;

	/**
	 * 获取失败
	 *
	 * @return
	 */
	public static CaptchaResult success() {
		return CaptchaResult.builder()
				.flag(true)
				.code(StatusCodeEnum.SUCCESS.getCode())
				.message(StatusCodeEnum.SUCCESS.getDesc())
				.data(new HashMap<>())
				.build();
	}

	/**
	 * 获取成功
	 *
	 * @return
	 */
	public static CaptchaResult fail() {
		return CaptchaResult.builder()
				.flag(false)
				.code(StatusCodeEnum.FAIL.getCode())
				.message(StatusCodeEnum.FAIL.getDesc())
				.data(new HashMap<>())
				.build();
	}

	/**
	 * 设置消息
	 *
	 * @param message
	 * @return
	 */
	public CaptchaResult message(String message) {
		this.message = message;
		return this;
	}

	/**
	 * 设置状态码和信息(1)
	 *
	 * @param code
	 * @param message
	 * @return
	 */
	public CaptchaResult codeAndMessage(Integer code, String message) {
		this.code = code;
		this.message = message;
		return this;
	}

	/**
	 * 设置状态码和信息(2)
	 *
	 * @param statusCodeEnum
	 * @return
	 */
	public CaptchaResult codeAndMessage(StatusCodeEnum statusCodeEnum) {
		this.code = statusCodeEnum.getCode();
		this.message = statusCodeEnum.getDesc();
		return this;
	}

	/**
	 * 设置数据(1)
	 * @param key
	 * @param value
	 * @return
	 */
	public CaptchaResult data(String key, Object value) {
		this.data.put(key, value);
		return this;
	}

	/**
	 * 设置数据(2)
	 * @param data
	 * @return
	 */
	public CaptchaResult data(Map<String, Object> data) {
		this.data = data;
		return this;
	}

}

二、Easy-Captcha验证码集成

2.1 添加pom.xml依赖

<!--Easy-Captcha Java图形验证码-->
<dependency>
	<groupId>com.github.whvcse</groupId>
	<artifactId>easy-captcha</artifactId>
	<version>1.6.2</version>
</dependency>

2.2 CaptchaController

@Api(tags = "验证码模块")
@RestController
public class CaptchaController {

	@Resource
	private StringRedisTemplate stringRedisTemplate;

	@ApiOperation(value = "获取图形验证码")
	@GetMapping("/captcha")
	public CaptchaResult captcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
		//长,宽,位数
		GifCaptcha gifCaptcha = new GifCaptcha(100, 42, 5);
		//设置类型
		gifCaptcha.setCharType(Captcha.TYPE_NUM_AND_UPPER);
		//生成验证码
		String code = gifCaptcha.text();
		//输出验证码
		System.out.println("验证码内容 captcha ===> " + code);
//		gifCaptcha.out(response.getOutputStream());
		//验证码放入Session中
		request.getSession().setAttribute("captcha", code);

		return CaptchaResult.success()
				.message("验证码生成成功!")
				.data("code",gifCaptcha.toBase64());

	}

}

2.3 测试

测试接口如下:
在这里插入图片描述
code中的信息复制一下,粘贴到解密工具的网站中
图片base64编码解密:Json.cn

解密如下:
在这里插入图片描述

IDEA编辑器控制台输出内容:
在这里插入图片描述

其他使用方法,请参考:EasyCaptcha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值