/**
* 验证码流程:
* 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; } }