JCaptcha在apache+tomcat下验证失效问题,jcaptchatomcat,Captcha使用当前S
分享于 点击 42451 次 点评:135
JCaptcha在apache+tomcat下验证失效问题,jcaptchatomcat,Captcha使用当前S
Captcha使用当前SessionId来做当前验证码的key,但是在apache+tomcat集群里,sessionId是不同的,会出现验证失败问题,解决方法: 继承JCaptcha的SimpleImageCaptchaServlet类
重写doGet方法,当获取验证码时,将sessionId放入到session中重写validateResponse验证方法,从session中获取sessionId,验证之...[Java]代码
public class JcaptchaExtendServlet extends SimpleImageCaptchaServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { super.doGet(httpServletRequest, httpServletResponse); // 将sessionId放入到session中,解决apache+tomcat集群sessionId不一样,验证问题 httpServletRequest.getSession().setAttribute( SessionKey.CAPTCHA_SESSIONID.key(), httpServletRequest.getSession().getId()); } public static boolean validateResponse(HttpServletRequest request, String userCaptchaResponse) { if (request.getSession(false) == null) return false; boolean validated = false; try { validated = service.validateResponseForID( (String) request.getSession().getAttribute( SessionKey.CAPTCHA_SESSIONID.key()), userCaptchaResponse).booleanValue(); } catch (CaptchaServiceException e) { e.printStackTrace(); } return validated; }}
用户点评