因为jfianl 生成的验证码保存在当前的Web应用中,浏览器中只有键。在验证验证码的时候,是通过读取cookie中的键,然后在服务器中通过键读取到值,然后进行比较的。在集群部署的情况下,将会出现验证码输入正常。而服务器返回错误的问题。这个时候,我们只需要重新实现ICaptchaCache接口,使用Redis 或者其他方式集中保存就好了
1.实现ICaptchaCache接口
import com.jfinal.captcha.Captcha;
import com.jfinal.captcha.ICaptchaCache;public class RedisICaptchaCache implements ICaptchaCache{@Overridepublic void put(Captcha captcha) {// 保存验证码信息}@Overridepublic Captcha get(String key) {// 读取验证码return null;}@Overridepublic void remove(String key) {// 删除验证码}@Overridepublic void removeAll() {// 删除所有验证码}}
2.在configConstant 方法中配置
实现的详细可以参考Jfinal 中的默认实现,路径是 com.jfinal.captcha.CaptchaCache