我正在写一个ASP.NET MVC网站,当用户提交的内容未通过我的Akismet垃圾邮件检查时,我想要显示验证码。我知道如何展示CAPTCHA,但我很难想象和规划这个架构。下面是我目前想:如何构建ASP.NET MVC网站的CAPTCHA验证体系结构?
- 用户通过HTTP POST提交内容
- 处理该提交的操作运行的Akismet在检查
- 如果Akismet在检查失败,行动电话
return RedirectToAction()
,并将用户关闭的CAPTCHA动作 - 该CAPTCHA动作通过使用MvcReCaptcha库显示CAPTCHA,然后处理该CAPTCHA结果
- 如果用户在成功验证时,CAPTCHA动作使用户返回到原来的动作。
我的问题是:我应该怎么工程师用户原来的行动回报?我需要以某种方式将用户提交的数据以及原始操作的名称携带到CAPTCHA操作中,以便RedirectToAction
同时包含这两个操作。
任何想法?提前致谢。
UPDATE:
Mare的回答下面链接在2008年PDC会话其中杰夫阿特伍德表明堆栈溢出使用验证码代码的一点点的记录。我要做的最终结果基本上是CAPTCHA如何在Stack Overflow上工作。
的应用验证码提交代码,杰夫表明执行以下操作:
- 检查`会议[ “的captcha-RETURNURL”]的内容;如果没有内容,returnUrl =“/”。
- 验证CAPTCHA提交。
- 如果CAPTCHA正确提交,
return Redirect(resultUrl);
这解决了我的问题的一部分。然而,仍然有我不明白几件事情:
- 如何设置
Session["captcha-returnUrl"]
从调用该验证码的方法? - 我该如何设置返回URL?我希望成功的CAPTCHA提交能够触发用户最初所做的表单提交 - 我如何传达表单路径和表单数据?