欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JCaptcha在apache+tomcat下验证失效问题,jcaptchatomcat,Captcha使用当前S

来源: javaer 分享于  点击 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;    }}
相关栏目:

用户点评