关于validateCaptcha()无法验证通过

用JFinal 4.9.16版本,通过renderCaptcha()生成了验证码,获取前端的_captchaCode,但用validateCaptcha(_captchaCode)无法验证通过,后来追踪validateCaptcha(_captchaCode)的方法类com.jfinal.captcha.CaptchaRender.validate(this,_captchaCode);直接用上,则可以通过。

 由于文档并没相关的说明,是否我那一步的设置有问题。

评论区

杜福忠

2022-01-16 16:13

根据描述,_captchaCode 这个是前端穿过来的值,而validateCaptcha(键名),这俩不是一个值的。
源码也没看仔细,源码是:
return com.jfinal.captcha.CaptchaRender.validate(this, getPara(paraName));

注意是:getPara(paraName)

PS:
https://gitee.com/jfinal/jfinal/blob/jfinal-4.9.16/src/main/java/com/jfinal/core/Controller.java

pandalam

2022-01-17 09:30

@杜福忠 _captchaCode 是通过getPara(paraName)传值进来的。
[源代码]
String _captchaCode = getPara("captchaCode");
boolean validateResult = validateCaptcha(_captchaCode);
setAttr("resule",validateResult);
renderJson();

用这个validateCaptcha(_captchaCode)通过不了,但直接用源码com.jfinal.captcha.CaptchaRender.validate(this,_captchaCode);又可以通过。

杜福忠

2022-01-17 12:09

@pandalam 得,你还是没看懂我说的,你改成:
renderJson("resule", validateCaptcha("captchaCode"));
就好使

杜福忠

2022-01-17 12:11

@pandalam 使用debug模式,打个断点看吧,就知道了,得用键,不要用值

pandalam

2022-01-17 14:01

@杜福忠 謝謝您的解答,您正確的,是我沒看清楚,謝謝!