来由:
在做一个页面会使用多个验证码的场景,发现使用原生的方法仅支持显示一个,于是就进行扩展。
1)新建一个BaseController 它继承 Controller ,需要用到多个验证码的控制层就进行继承它
public class BaseController extends Controller
2)在BaseController中加入如下代码:
public void renderCaptcha(String captchaName) {
CaptchaRender.setCaptchaName(captchaName);
render(new CaptchaRender());
}
public boolean validateCaptchaByValue(String captchaName,String userInputString) {
return CaptchaRender.validate(getCookie(captchaName),userInputString);
}
public boolean validateCaptcha(String captchaName,String paraName) {
return validateCaptchaByValue(captchaName,getPara(paraName));
}3)使用方式:
3.1 原生方式
public void qcode(){
renderCaptcha();
}3.2 自定义验证码cookie key方式
public void qcode(){
renderCaptcha(getPara("key"));
}3.3 原生验证
if(!validateCaptcha("paraName")){
renderJson(new Result().setFail("验证码效验错误"));
return;
}3.3 指定验证码cookie key 以及 参数name
if(!validateCaptcha("cookieKey","paraName")){
renderJson(new Result().setFail("验证码效验错误"));
return;
}注:系统验证码默认 180 秒过期哦~ 若想要时间长点 建议自己 去再稍微重写或者覆盖
com.jfinal.captcha.Captcha.DEFAULT_EXPIRE_TIME = 180
楼主的分享十分简洁,谢谢分享,赞