2012-03-16 7 views
8

誰も私のMVC3アプリケーションでのstackoverflowのようなreCaptchaの機能を持つ方法を説明することができます。MVC3アプリケーションでGoogle reCaptchaを実装するにはどうすればよいですか?

どのようにカスタマイズできますか?

+0

のreCAPTCHA:

あなたはここにハニーポットキャプチャの一般的な考え方についての詳細を読むことができますか? http://www.google.com/recaptcha – LukeH

+0

Honeypot ReCaptchaの使用をお勧めします。あなたのユーザーのための経験はずっと良いです。 1つ前のASP.NET MVCがありますhttp://nuget.org/packages/SimpleHoneypot.MVC – Paul

+0

@Paul、ハニーポットを実装する方法の例がありますか? – updev

答えて

30

私はGoogle ReCaptchaを使用しています。非常にうまく動作し、実装が非常に簡単です。あなたはあなたがGoogleのreCAPTCHAのサイトでアカウントを作成し、設定を取得する必要があります

(この時点では1.0.5.0)、DLLの現在のバージョンを持っていることを確認し、HTTPSを使用している場合は、その

注意公開鍵と秘密鍵のWebプロジェクトのメインweb.configファイルにキーを追加します。

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    <add key="ReCaptchaPrivateKey" value="put your private key value here" /> 
    <add key="ReCaptchaPublicKey" value="put your public key value here" /> 
</appSettings> 

今NuGetを使用し、.NET

ためにreCAPTCHAのプラグインをインストールし、あなたのVIEWSフォルダの中にあなたのweb.configファイルにアクセスしてください。この行を追加します:あなたは、ファイルの先頭にusingステートメントを追加し、キャプチャを表示したいというあなたのビューで、その後

<namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="Recaptcha"/> 
</namespaces> 

@using Recaptcha; 

、あなたのビューにこれを追加します。

[HttpPost] 
[RecaptchaControlMvc.CaptchaValidator] 
public ActionResult ForgotPassword(CheckUsernameViewModel model, bool captchaValid, string captchaErrorMessage) { 
    if (!Membership.EnablePasswordReset) 
     throw new Exception("Password reset is not allowed\r\n"); 
    if(ModelState.IsValid) { 
     if(captchaValid) { 
      return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username }); 
     } 
     ModelState.AddModelError("", captchaErrorMessage); 
    } 
    return View(model); 
} 
:あなたはキャプチャ結果を受け入れるように署名を変更する必要がありますあなたのコントローラのアクションで
<div class="editor-label"> 
    Are you a human? 
</div> 
<div class="editor-field"> 
    @Html.Raw(Html.GenerateCaptcha("captcha", "clean")) 
    @Html.ValidationMessage("captcha") 
</div> 

これらの手順を実行すると、複数のページにcaptchaを実装することができ、スムーズに動作します。コントローラのアクションのパラメータ名は正しい名前でなければならないことに注意してください:

bool captchaValid, string captchaErrorMessage 

あなたはこれらのパラメータ名を変更した場合は、実行時にエラーになります戻るときにコントローラのアクションへのフォームのポスト。

+0

公開鍵/秘密鍵の値は何ですか?私はそこに何を置くべきですか? – updev

+0

@updev - あなたはGoogleのReCaptchaページに登録してください:http://www.google.com/recaptcha/ –

+0

@ cd-smith:MVC4にRecaptchaを追加する際のガイドラインに従うと、プロジェクト;私は最初に正しいRecaptcha結果でフォームを送信するとコントローラの動作が2回呼び出され、2回目はエラーの結果が表示されます。同じようなことに直面しましたか? – ThomasWeiss

3

私はHoneypot Captchaの使用をお勧めします。あなたのユーザーのための経験はずっと良いです。 https://github.com/webadvanced/Honeypot-MVC/wiki ただGetting Startedセクションでスタート:ここでそれを取得する方法についてのwikiがあり、ここでhttp://nuget.org/packages/SimpleHoneypot.MVC

PM> Install-Package SimpleHoneypot.MVC4 

1つのフォアASP.NET MVCがあります。 http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

関連する問題