如何为ASP.NET MVC站点构建CAPTCHA验证体系结构?

时间:2010-08-14 18:07:42

标签: c# asp.net asp.net-mvc architecture captcha

我正在编写一个ASP.NET MVC网站,我想在用户提交的内容未通过我的Akismet垃圾邮件检查时显示CAPTCHA。我知道如何显示CAPTCHA,但我很难想象和规划这个架构。这就是我目前的想法:

  1. 用户通过HTTP POST提交内容
  2. 处理提交的操作会运行Akismet检查
  3. 如果Akismet检查失败,则操作会调用return RedirectToAction()并将用户发送给CAPTCHA操作
  4. CAPTCHA操作使用MvcReCaptcha库显示CAPTCHA,然后处理CAPTCHA结果
  5. 如果用户成功验证,则CAPTCHA操作会将用户返回到原始操作。
  6. 我的问题是:我应该如何设计用户返回原始操作?我需要以某种方式携带用户提交的数据,以及原始操作的名称,进入CAPTCHA操作,以便RedirectToAction包括两者。

    任何想法?提前致谢。


    更新

    Mare的答案与PDC 2008上的会话记录相关联,其中Jeff Atwood展示了Stack Overflow使用的一小部分CAPTCHA代码。我想要的最终结果实际上是CAPTCHAs如何在Stack Overflow上工作。

    杰夫展示的CAPTCHA提交代码执行以下操作:

    1. 检查`Session [“captcha-returnUrl”]的内容;如果没有内容,则returnUrl =“/".
    2. 验证CAPTCHA提交。
    3. 如果CAPTCHA已正确提交,return Redirect(resultUrl);
    4. 这解决了我的部分问题。但是,仍有一些我不理解的事情:

      • 如何从调用CAPTCHA的方法中设置Session["captcha-returnUrl"]
      • 如何设置返回网址?我希望CAPTCHA提交成功,以触发用户最初提交的表单提交 - 如何传达表单路径和表单数据?

1 个答案:

答案 0 :(得分:1)

也许你可以在PDC 08的旧视频中找到一些想法,其中Jeff Atwood在Stack Overflow上讨论Recaptcha实现,它位于视频中间的某个位置: http://channel9.msdn.com/pdc2008/PC21/

希望有所帮助