2013-07-24 71 views
0

我在我的MVC應用程序中使用ReCaptcha。我能夠構建此應用程序,但出現錯誤「reCAPTCHA需要使用公鑰&私鑰」 我有在Web.Config文件中聲明瞭私鑰和公鑰。但同樣的錯誤。是否有任何方法可以在應用程序加載上生成私鑰和公鑰,這樣就不會有人篡改它。reCAPTCHA需要使用公鑰和私鑰配置

+1

我對reCAPTCHA並不熟悉,但不是您提到用於驗證服務的普通舊API密鑰的關鍵嗎? (用於費率控制等)也就是說,通過reCAPTCHA發給您的應用程序的一個 - 您如何建議生成它? – millimoose

+0

你什麼時候遇到這個錯誤?一旦你啓動應用程序,它會發生嗎?還是顯示在凝視頁面上? – X3074861X

+0

是的,我已經在視圖中添加了@ Html.Raw(Html.GenerateCaptcha()),並且在我提到的頁面上方使用了@using Recaptcha ...我在註冊頁面添加了這個按鈕,我有一個名爲Register的按鈕,點擊它拋出我的錯誤... – SantyEssac

回答

1

我一直在使用驗證碼亦隨PoliteCaptcha,而現在我們MVC4應用的關鍵,而這是我目前工作的實施:

的Web.Config

<appSettings> 
    <add key="reCAPTCHA::PublicKey" value="abcdefghijklmnopqrstuvwxyz" /> 
    <add key="reCAPTCHA::PrivateKey" value="abcdefghijklmnopqrstuvwxyz" /> 
</appSettings> 

RegisterUser.cshtml

確保您已使用一個在頁面的頂部:

@using PoliteCaptcha 

根據你什麼驗證碼出現,如果它的觸發,這將使HTML :

@Html.SpamPreventionFields() 

然後在這個頁面我使用擴展幫手@Scripts部分,但你可以很容易地引用直接在腳本:

@section Scripts 
{  
    @Html.SpamPreventionScript() 
    @Scripts.Render("~/bundles/jqueryval") 
} 

RegisterUserController.cs

然後註釋,當你想驗證它是否是一個真正的用戶所調用的方法:

[HttpPost, ValidateSpamPrevention] 
public ActionResult RegisterUser(RegisterUserModel request) 
{ 
    // ... 
} 

如果頁面互動已觸發驗證碼,則Model.IsValid將在此處返回false,然後將顯示由@Html.SpamPreventionFields生成的HTML。