目录
1.可提取的验证码配置
1.1验证码的长宽,以及位数,以及过期时间,拦截的接口都是可配置的。
1.2拦截的接口可配置,这样可以配置哪些服务需要验证码
1.3验证码的生成逻辑可以配置
图形验证码采用三级配置:
默认配置封装:封装图形验证码的配置类:ImageCodePropertites 需要考虑到短信验证码 ValidateCodeProperties,
2.验证码的基本参数可配
图形验证码的配置类和验证码配置类:
package org.lilly.core.properties;
/**
* User: Mr.Wang
* Date: 2020/6/11
* 图形验证码的配置类和他的默认配置
*/
public class ImageCodePropertites {
private int width = 67;
private int height = 23;
private int length = 4;
private int expireTime = 60;
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getExpireTime() {
return expireTime;
}
public void setExpireTime(int expireTime) {
this.expireTime = expireTime;
}
}
public class ValidateCodeProperties {
private ImageCodePropertites imageCode = new ImageCodePropertites();
public ImageCodePropertites getImageCode() {
return imageCode;
}
public void setImageCode(ImageCodePropertites imageCode) {
this.imageCode = imageCode;
}
}
有了配置类就可以去替换掉代码里面写死的参数:
验证码的拦截路径可配置(目前暂时不支持),因为在Springboot的控制器中如果return 返回templates文件的名字会再次被Security拦截,走他的配置的loginPage逻辑,对于验验证码的逻辑,每个请求会发两次,第一次的时候url是0,第二次的时候url才有值。然后登陆失败了他还要去走一遍loginPage. validateCodeFilter.afterPropertiesSet();
登陆成功返回JSON:
至此验证码参数可配做完了
3.验证码的生成逻辑可配置
这里是高级的开发人员要掌握的一个常见的开发技巧,叫做以增量的方式去适应变化,
首先会提供一个生成验证码的接口:
然后会有一个默认的实现:需要注意的是这个Bean没有直接交给Spring去管理,而是通过配置Bean的方式交给Spring去管理,这样做的好处就是,可以条件配置这个Bean
这样的话我再demo项目中去配置一个名字为validateImageGenerator的Bean就可以实现覆盖默认配置的逻辑。
至此验证码的重构功能完成。