Я пишу сайт ASP.NET MVC, на котором я хочу отобразить CAPTCHA, когда контент, который отправляет пользователь, не проходит проверку Akismet на спам. Я знаю, как отобразить CAPTCHA, но мне сложно представить и спланировать архитектуру для этого. Вот что я сейчас думаю:
- Пользователь отправляет контент через HTTP POST
- Действие, которое обрабатывает отправку, запускает проверку Akismet
- Если проверка Akismet не пройдена, действие вызывает
return RedirectToAction()
и отправляет пользователя к действию CAPTCHA
- Действие CAPTCHA отображает CAPTCHA с помощью библиотеки MvcReCaptcha, затем обрабатывает результат CAPTCHA
- Если пользователь успешно проходит проверку, действие CAPTCHA возвращает пользователя к исходному действию.
У меня такой вопрос: как мне спроектировать возврат пользователя к исходному действию? Мне нужно каким-то образом перенести данные, представленные пользователем, а также имя исходного действия в действие CAPTCHA, так что RedirectToAction
включает в себя оба.
Есть идеи? Заранее спасибо.
UPDATE:
Ответ Маре, приведенный ниже, связан с записью сеанса на PDC 2008, где Джефф Этвуд продемонстрировал немного кода CAPTCHA, который использует переполнение стека. Конечный результат, к которому я стремлюсь, заключается в основном в том, как CAPTCHA работают здесь при переполнении стека.
Код представления CAPTCHA, который показал Джефф, выполняет следующие действия:
- Проверьте `Session [" captcha-returnUrl "] на наличие содержимого; если нет содержимого, returnUrl = "/".
- Подтвердить отправку CAPTCHA.
- Если CAPTCHA был представлен правильно,
return Redirect(resultUrl);
Это решает часть моего вопроса. Однако есть еще несколько вещей, которые я не понимаю:
- Как мне установить
Session["captcha-returnUrl"]
из метода, который вызывает CAPTCHA?
- Что мне установить для URL возврата? Я хочу, чтобы успешная отправка CAPTCHA инициировала отправку формы, которую пользователь делал первоначально - как передать путь к форме и данные формы?