Czy ktoś może wyjaśnić, jak mieć funkcję reCaptcha jak stackoverflow w mojej aplikacji MVC3.Jak zaimplementować Google reCaptcha w aplikacji MVC3?
Jak można to zmienić?
Czy ktoś może wyjaśnić, jak mieć funkcję reCaptcha jak stackoverflow w mojej aplikacji MVC3.Jak zaimplementować Google reCaptcha w aplikacji MVC3?
Jak można to zmienić?
Używam Google ReCaptcha i działa bardzo dobrze i jest bardzo prosty w implementacji.
Zauważ, że jeśli używasz Https mieć pewność, masz aktualną wersję 1.0.5.0 dll (w tym momencie)
Musisz utworzyć konto w serwisie Google Odśwież, a otrzymasz zestaw kluczy publicznych i prywatnych. Dodaj klucze do swojej strony internetowej projektu głównego pliku 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>
Teraz użyj Nuget i zainstalować wtyczkę reCAPTCHA NET
Następnie przejdź do pliku web.config wewnątrz folderu widoki. Dodaj tę linię:
<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>
Następnie w widoku, który chcesz pokazać captcha, dodać za pomocą komunikatu na górze pliku
@using Recaptcha;
następnie dodać do tego widoku:
<div class="editor-label">
Are you a human?
</div>
<div class="editor-field">
@Html.Raw(Html.GenerateCaptcha("captcha", "clean"))
@Html.ValidationMessage("captcha")
</div>
W swoim działaniu regulatora trzeba będzie zmodyfikować podpis do uznania wyników captcha:
[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);
}
Po tych krokach mogłem wdrożyć captcha na kilku stronach i działa sprawnie. Należy pamiętać, że nazwy parametrów na działanie regulatora musi być nazwany POPRAWNIE:
bool captchaValid, string captchaErrorMessage
Jeśli zmieniono nazwy tych parametrów otrzymasz błąd w czasie wykonywania, gdy Twoje posty formularz z powrotem do działania kontrolera.
Jaka jest wartość klucza publicznego/prywatnego? Co powinienem tam umieścić? – updev
@updev - otrzymujesz to, rejestrując się na stronie Google ReCaptcha: http://www.google.com/recaptcha/ –
@ cd-smith: Mam dziwne zachowanie, gdy postępujesz zgodnie ze wskazówkami, aby dodać Recaptcha do MVC4 projekt ; akcja kontrolera zostanie wywołana dwa razy, gdy prześlę formularz, najpierw z poprawnymi wynikami Recaptcha, a następnie po raz drugi z wynikiem błędu! Czy miałeś do czynienia z czymś podobnym? – ThomasWeiss
Polecam używanie Honeypot Captcha. Doświadczenie dla użytkowników jest DUŻO lepsze. Jest jeden dziobowy ASP.NET MVC tutaj http://nuget.org/packages/SimpleHoneypot.MVC
PM> Install-Package SimpleHoneypot.MVC4
Jest WiKi w jaki sposób dostać się tutaj: https://github.com/webadvanced/Honeypot-MVC/wiki Wystarczy rozpocząć się z sekcji Getting Started
.
można przeczytać więcej na temat ogólnej idei Honeypot Captcha tutaj: http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx
Odśwież? http://www.google.com/recaptcha – LukeH
Polecam używanie Rejestrującego Honeypot. Doświadczenie dla użytkowników jest DUŻO lepsze. Jest jeden pierwszy ASP.NET MVC tutaj http://nuget.org/packages/SimpleHoneypot.MVC – Paul
@Paul, Czy masz przykład jak zaimplementować honeypot? – updev