430 Stimmen

Verwendung von reCAPTCHA auf localhost

Ich entwickle eine Website mit PHP und möchte eine menschliche Überprüfung in einer der Sitzungen durchführen. Für die Entwicklung führe ich das System zunächst lokal aus, und wenn es fertig ist, werde ich es auf eine Domäne übertragen.

In der reCAPTCHA-Website wird gesagt, dass das Plugin nur auf der angegebenen Domain (und Subdomains) funktioniert.

Gibt es eine Möglichkeit, das reCAPTCHA-Plugin auf einem Localhost zu verwenden?

478voto

Nathan Osman Punkte 67377

Update

Die ursprüngliche Antwort ist nicht mehr richtig. Im Entwicklerhandbuch heißt es jetzt:

"Wenn Sie "localhost" für die Entwicklung verwenden möchten, müssen Sie es zur Liste der Domänen hinzufügen.

Dies funktioniert nur, wenn Sie auf localhost mit 127.0.0.1/... statt localhost/... .

Die ursprüngliche Antwort ist nachstehend wiedergegeben.


Nach Angaben von das reCAPTCHA-Entwicklerhandbuch :

"localhost"-Domänen werden standardmäßig nicht mehr unterstützt. Wenn Sie sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie zur Liste der unterstützten Domains für Ihren Site-Key hinzufügen. Gehen Sie zur Verwaltungskonsole, um die Liste der unterstützten Domains zu aktualisieren. Wir empfehlen, einen separaten Schlüssel für Entwicklung und Produktion zu verwenden und localhost auf Ihrem Produktions-Site-Key nicht zuzulassen."

Mit anderen Worten: Verwenden Sie einfach denselben Schlüssel.

188voto

Pablo Punkte 1585

Das hat bei mir funktioniert:

Auszug aus dem reCAPTCHA-Dokumentation :

Mit den folgenden Testschlüsseln erhalten Sie immer No CAPTCHA und alle Verifizierungsanfragen werden akzeptiert.

Schlüssel der Website: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Geheimschlüssel: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Das reCAPTCHA-Widget zeigt eine Warnmeldung an, die besagt, dass es nur zu Testzwecken dient. Bitte verwenden Sie diese Schlüssel nicht für Ihre Produktionsverkehr.

113voto

CC Inc Punkte 5649

Bitte beachten Sie, dass ab 2016, reCAPTCHA unterstützt nicht mehr naiv localhost . Aus den FAQ:

Localhost-Domains werden standardmäßig nicht mehr unterstützt. Wenn Sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie der Liste hinzufügen der unterstützten Domains für Ihren Site-Key hinzufügen. Gehen Sie zur Verwaltungskonsole, um Ihre Liste der unterstützten Domains zu aktualisieren. Wir empfehlen die Verwendung eines separaten Schlüssels für Entwicklung und Produktion zu verwenden und localhost nicht auf Ihrer Produktions-Site-Schlüssel.

Einfach hinzufügen localhost zu Ihrer Liste der Domains für Ihre Website hinzufügen, und schon sind Sie fertig.

94voto

Ramin Bateni Punkte 15165

Es ist so einfach:

  1. Gehen Sie zu Ihrem Google reCAPTCHA-Verwaltungstafel
  2. 追加 localhost & 127.0.0.1 zu den Domänen einer neuen Website, wie in der folgenden Abbildung dargestellt.

Enter image description here


Aktualisierung:

Wenn Ihre Frage ist, wie man reCAPTCHA auf der Google-Website für die Verwendung in localhost, dann hat es sein, wie ich es oben geschrieben, aber wenn Sie neugierig sind, wie Sie reCAPTCHA auf verwenden können beide localhost y un website host por minimaler Code in Ihrem Controller und verhindern einige Codes wie ConfigurationManager.AppSettings["ReCaptcha:SiteKey"] darin, dann helfe ich Ihnen mit dieser zusätzlichen Beschreibung und dem Code in meiner Antwort.

Gefallen Ihnen die folgenden GET- und POST-Aktionen?

Der folgende Code unterstützt reCAPTCHA und benötigt keinen weiteren Code für die Handhabung von reCAPTCHA.

[HttpGet]
[Recaptcha]
public ActionResult Register()
{
    // Your code in the GET action
}

[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
   // Your code in the POST action
   if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
   {
       // Your code
   }
   // Your code
}

En Ansicht: ( Referenz )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

@if (ViewBag.RecaptchaLastErrors != null)
{
    <div>Oops! Invalid reCAPTCHA =(</div>
}

So verwenden Sie es

A) Fügen Sie Folgendes hinzu ActionFilter zu Ihrem Webprojekt:

public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
        filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
    }
}

B) Fügen Sie die reCAPTCHA-Einstellungsschlüssel für beide localhost y website so in Ihrem webconfig Datei:

<appSettings>

    <!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
    <add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
    <add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
    <!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
    <!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
    <add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->

    <!-- OTHER SETTING KEYS OF YOUR PROJECT -->

</appSettings>

Anmerkung: Auf diese Weise brauchten Sie nicht die reCaptcha_SecretKey Parameter in der Postaktion oder jede ViewBag für reCaptcha manuell in Ihren Aktionen und Ansichten. Alle werden automatisch zur Laufzeit mit den entsprechenden Werten ausgefüllt, je nachdem, ob Sie das Projekt auf dem lokalen Rechner oder auf der Website ausgeführt haben.

28voto

Yoni Ayalon Punkte 397

Wenn Sie Folgendes hinzufügen Domänen in Google reCAPTCHA:

Neue Domäne hinzufügen:

Localhost , nicht localhost

Das "L" ist ein Großbuchstabe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X