blade增加验证码功能

96
亡羊补牛
2019-05-15 16:35 字数 1942 阅读 295评论 3

今天看群里有人问如何增加验证码,这不是给翼总挖坑吗,其实用了mica腰不疼了,腿也不酸了,实现验证码功能简单的不能再简单了,mica官网文档地址:

https://www.dreamlu.net/docs/captcha.html

来吧,没代码没真相:

1、maven引入依赖,最新版本 1.01


    net.dreamlu
    mica-captcha
    1.0.1


2、新建个Controller,注入 

MicaCaptchaServlet
@Autowired
private MicaCaptchaServlet micaCaptcha;


3、写一个获取验证码和一个校验验证码的类,我是在开放api接口的配置文件中为了少打几下键盘,用的一个访问路径:

/**
 * 图形验证码
 */
@GetMapping(value = "captcha.jpg", produces = MediaType.IMAGE_JPEG_VALUE)
@ResponseBody
public ResponseEntity captcha(HttpServletResponse response) {
   //设置cookie和redi缓存,默认是 mica
   micaCaptcha.setCookieName("blade-Captcha");
   micaCaptcha.setCacheName("blade-Captcha");
   return micaCaptcha.generate(response);
}

/**
 * 校验图形验证码
 */
@PostMapping(value = "/captcha.jpg")
@ResponseBody
public R captcha(HttpServletResponse response, String captcha) {
   boolean validated = micaCaptcha.validate(response, captcha);
   return R.data(validated);
}


4、开放api对外访问,既然验证码,肯定不需要授权访问,添加最下面这行,

public SecureRegistry secureRegistry() {
   SecureRegistry secureRegistry = new SecureRegistry();
   secureRegistry.excludePathPatterns("/wechat/**");
   secureRegistry.excludePathPatterns("/captcha.jpg");


到这里,你的验证码就可以了,


Cookie:




redis:


postnam:

POST校验:


校验之后,redis缓存会被删除,保证验证码只使用一次,接下来随便你怎么使用了,设置验证码详细参数,请关注卢总官方mica仓库,地址:

https://gitee.com/596392912/mica/tree/master

Blade
登录 后发表评论
3条评论
单调路过
1楼 · 2019-05-16 09:34

及时雨 正找呢

admin
2楼 · 2019-05-15 21:28

春哥牛皮!bladex基于mica全面定制,想了解原版的可以看一下:https://gitee.com/596392912/mica

如梦技术
3楼 · 2019-05-15 19:49

bladex 的 redis 插件是可以直接 使用 # 号分割 超时时间的,可以更加人性话,另外cookie 和 cachename 可以配置在 yml 里