/**
* 验证码流程:
* 1、前提为设置开启验证码,设置接口/code为网关白名单
*
* 2、前端请求接口/code 获取返回为:
* {
* "msg":"操作成功",
* "img":"/9j/4AAQSkqmVaNmKVWNmf/Z", //图像base64
* "code":200,
* "captchaOnOff":true,
* "uuid":"2ed47732c50b48b5980c5dbbcf800ad2"
* }
*
* 3、返回同时记录code到redis,记录形式为 uuid = code
* String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
* redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
*
* 4、提交登陆请求,包含了填写的验证结果code和uuid:
* {
* username: "admin",
* password: "admin123",
* code: "2",
* uuid: "dcbeedcd858c4caa934ece00cacd311e"
* }
*
* 5、过滤器ValidateCodeFilter对验证码进行验证
* 取出
* code: "2",
* uuid: "dcbeedcd858c4caa934ece00cacd311e"
* 根据uuid为key反向到redis中进行比对,比对失败抛出异常。
*
* 6、后续转发到ruoyi-auth/auth接口进行登陆认证
* 登陆认证只用
* username: "admin",
* password: "admin123",
* 这两个参数。
*
* @author baijg
* https://gitee.com/baijigan
*
@RestController
public class CodeController {
@Autowired
private ValidateCodeService validateCodeService;
@SentinelResource("ruoyi-captcha")
@RequestMapping("code")
public AjaxResult getCode(){
System.out.println("CodeController handle");
AjaxResult ajax;
try
{
ajax = validateCodeService.createCaptcha();
}
catch (Exception e)
{
e.printStackTrace();
ajax= new AjaxResult(500 , "生成验证码错误");
}
return ajax;
}
}