Ошибка JCaptcha при блокировке cookie - PullRequest
0 голосов
/ 03 февраля 2012

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

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

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>

Я хочу, чтобы моя капча работала независимо от того, заблокированы куки или нет !!!Есть ли решение для этого или любого другого метода для реализации капчи в Java Я использую JDK 1.7 и Tomcat 7 в качестве среды выполнения.

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

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

Есть и другие библиотеки, например SimpleCatcha . Или другие услуги, такие как recaptcha .

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

Для каждой формы, включая капчу:

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

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

0 голосов
/ 03 февраля 2012

JCaptcha не работает, если куки отключены.Существует ошибка: http://jcaptcha.octo.com/jira/browse/JASTR-3

Вы можете попробовать другую библиотеку, например recaptcha.

...