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