Как структурировать архитектуру проверки CAPTCHA для сайта ASP.NET MVC? - PullRequest
2 голосов
/ 14 августа 2010

Я пишу сайт ASP.NET MVC, на котором я хочу отобразить CAPTCHA, когда контент, который отправляет пользователь, не проходит проверку Akismet на спам. Я знаю, как отобразить CAPTCHA, но мне сложно представить и спланировать архитектуру для этого. Вот что я сейчас думаю:

  1. Пользователь отправляет контент через HTTP POST
  2. Действие, которое обрабатывает отправку, запускает проверку Akismet
  3. Если проверка Akismet не пройдена, действие вызывает return RedirectToAction() и отправляет пользователя к действию CAPTCHA
  4. Действие CAPTCHA отображает CAPTCHA с помощью библиотеки MvcReCaptcha, затем обрабатывает результат CAPTCHA
  5. Если пользователь успешно проходит проверку, действие CAPTCHA возвращает пользователя к исходному действию.

У меня такой вопрос: как мне спроектировать возврат пользователя к исходному действию? Мне нужно каким-то образом перенести данные, представленные пользователем, а также имя исходного действия в действие CAPTCHA, так что RedirectToAction включает в себя оба.

Есть идеи? Заранее спасибо.


UPDATE:

Ответ Маре, приведенный ниже, связан с записью сеанса на PDC 2008, где Джефф Этвуд продемонстрировал немного кода CAPTCHA, который использует переполнение стека. Конечный результат, к которому я стремлюсь, заключается в основном в том, как CAPTCHA работают здесь при переполнении стека.

Код представления CAPTCHA, который показал Джефф, выполняет следующие действия:

  1. Проверьте `Session [" captcha-returnUrl "] на наличие содержимого; если нет содержимого, returnUrl = "/".
  2. Подтвердить отправку CAPTCHA.
  3. Если CAPTCHA был представлен правильно, return Redirect(resultUrl);

Это решает часть моего вопроса. Однако есть еще несколько вещей, которые я не понимаю:

  • Как мне установить Session["captcha-returnUrl"] из метода, который вызывает CAPTCHA?
  • Что мне установить для URL возврата? Я хочу, чтобы успешная отправка CAPTCHA инициировала отправку формы, которую пользователь делал первоначально - как передать путь к форме и данные формы?

1 Ответ

1 голос
/ 15 августа 2010

Возможно, вы можете найти некоторые идеи в старом видео с PDC 08, где Джефф Этвуд говорит о реализации Recaptcha в Stack Overflow, где-то в середине видео: http://channel9.msdn.com/pdc2008/PC21/

Надеюсь, это поможет

...