开发者社区> 问答> 正文

firefox下CaptchaRender的问题? 400 报错

firefox下CaptchaRender的问题? 400 报错

@JFinal 你好,想跟你请教个问题:

我尝试使用CaptchaRender生成验证码,在后台验证的时候,发现在火狐浏览器下无法验证成功,chrome及IE下没问题不知为何?

另外还想请教波总,jfinal提供的两个连接池应该如何选择?

注:火狐版本41.0 且 cookies未禁用

controller代码如下:

public class HelloController extends Controller {
	
	private static final String RANDOM_CODE_KEY = "code";

	public void index() {
		CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY);
		render(img);
	}

	public void login() {
		String inputRandomCode = getPara("inputRandomCode").toUpperCase();
		boolean loginSuccess = CaptchaRender.validate(this, inputRandomCode,
				RANDOM_CODE_KEY);
		if (loginSuccess) {
			renderText("success");
		} else {
			renderText("failure");
		}
	}
}



展开
收起
爱吃鱼的程序员 2020-06-01 14:34:42 605 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

       用的是哪个 jfinal 版本,则期版本对 CaptchaRender.validate(...)  方法来说是大小写敏感的,建议升级到最新版本的 jfinal。

       连接池建议使用 DruidPlugin。

    ######http://bbs.csdn.net/topics/390664819%3Fpage%3D1######回复 @JFinal : 使用火狐时,F5刷新http://localhost/hello,后台会有两次请求,应该是这里的问题~######回复 @大白0-0 : 如果确定使用的是 jfinal 2.0 自带的 CaptchaRender 的功能,就不会有大小写问题,已做过处理,建议仔细单步调试一下 CaptchRender.validator(...) 方法内部######inputRandomCode.equalsIgnoreCase(controller.getCookie(randomCodeKey)) 返回false 45682961b1376968975f75adc03881b3 b8e2f0316ed0c046f60a4a11cf6dec33 哈希值不同,不知哪里的问题######回复 @大白0-0 : 单步调试跟踪一下,看一下是为什么验证不成功######
    改为在html中请求图片就没问题了。


    在请求中直接将验证码返回会出问题,后台会有有两次请求,这应该是火狐浏览器的问题。
    login.html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <img src="/hello/img"/>
    </body>
    </html>

    HelloController.java


    public class HelloController extends Controller {
    	
    	private static final String RANDOM_CODE_KEY = "validatecode";
    
    	public void index() {
    		//new User().set("name", "James").set("age", 25).set("sex", "nan").save();
    		//CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY);
    		//render(img);
    		render("/login.html");
    	}
    
    	public void login() {
    		String inputRandomCode = getPara("inputRandomCode");
    		System.out.println(inputRandomCode+"-"+inputRandomCode.length());
    		System.out.println(HashKit.md5(inputRandomCode));
    		System.out.println(this.getCookie(RANDOM_CODE_KEY));
    		boolean loginSuccess = CaptchaRender.validate(this, inputRandomCode,
    				RANDOM_CODE_KEY);
    		if (loginSuccess) {
    			renderText("success");
    		} else {
    			renderText("failure");
    		}
    	}
    	
    	public void img(){
    		CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY);
    		render(img);
    	}
    
    }
    2020-06-01 14:34:43
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载