2012-02-03 6 views
0

Я реализовал JCaptcha в своем веб-приложении, и он отлично работает, но когда файлы cookie браузера заблокированы, он всегда терпит неудачу и возвращает false.JCaptcha не удалось, когда cookie заблокирован

код сервлета выглядит следующим образом:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 



     String userCaptchaResponse =request.getParameter("jcaptcha"); 
     boolean captchaPassed = SimpleImageCaptchaServlet.validateResponse(request, userCaptchaResponse); 

     if(captchaPassed){ 
     System.out.println("success!!"+userCaptchaResponse); 
     RequestDispatcher rd=request.getRequestDispatcher("Result.jsp"); 
     rd.forward(request, response); 

     //response.sendRedirect("Result.jsp"); 

     }else{ 
      System.out.println("failure!!"+userCaptchaResponse); 
      response.sendRedirect("Index.jsp"+"?id=false"); 

     } 

    } 

и код в JSP странице

<tr align="center"> 
<td align="right" width="33%"><img height="60px" width="140px" src="jcaptcha.jpg" /></td> 
<td align="left" width="33%" valign="middle"><input type="text" name="jcaptcha" value="" /></td> 
</tr> 

Я хочу, чтобы мой CAPTCHA, чтобы работать независимо от того, блокируются ли куки или нет !!! Есть ли какое-либо решение для этого или любого другого метода для реализации captcha в java Я использую jdk 1.7 и tomcat 7 в качестве среды выполнения.

ответ

1

Проблема с вашим поиском в поисковой системе заключается в том, что она зависит от сеанса пользователя. Это, по моему мнению, недостаток дизайна. Если файлы cookie заблокированы, сеанс не будет связан с пользователем.

Существуют и другие библиотеки, например. SimpleCatcha. Или другие услуги, такие как recaptcha.

В принципе, если у вас есть библиотека, которая генерирует вам капчи можно реализовать так как алгоритм псевдо, который не зависит от сеанса:

Для каждой формы, включая искаженным:

  • Сформировать временный капчу
  • Создайте труднодоступный и уникальный идентификатор (возможно, с uuid).
  • Ссылка уникальный identfier с правильной стороны ответа сервера и сохраняются это временно
  • Обеспечивают уникальный идентификатор в сгенерированной форме
  • Если пользователь отправляет форму он обеспечит догадку и UUID вы можете LookUp эту пару на вашей стороне сервера.
  • Недействительный UUID и изображение, или пользователь не ввел правильный ответ.

Если это слишком медленно с точки зрения производительности, вы можете подумать о том, чтобы создать фоновый процесс для заполнения контейнера/очереди FILO фиксированного размера для хранения предварительно вычисленных капчей.