来由:
在做一个页面会使用多个验证码的场景,发现使用原生的方法仅支持显示一个,于是就进行扩展。
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
楼主的分享十分简洁,谢谢分享,赞