Spam" könnte eines der schrecklichsten Wörter für den Besitzer einer Webanwendung sein. Vor allem für eine Anwendung mit vielen nutzergenerierten Inhalten kann es ein Alptraum sein, damit umzugehen. Um die Spammer in Schach zu halten, kann ein kostenloser Dienst von Google namens reCaptcha verwendet werden. Ein Dienst, der die Website vor Spam und Missbrauch schützt und den Nutzern die Möglichkeit gibt, sich zu bestätigen, ohne ein Captcha lösen zu müssen. Google reCaptcha schützt die Anwendung vor einem Denial-of-Service-Angriff, indem es die Automatisierung von Formularübermittlungen verhindert.
Google reCaptcha ist eine bessere Lösung als die bestehenden Bild-Captchas, ist einfach zu bedienen und verfügt über erweiterte Sicherheitsfunktionen. Mit einer fortschrittlichen Risikoanalyse-Engine hält reCaptcha automatisierte Bots davon ab, Spamming-Aktivitäten für Ihre Anwendung durchzuführen. Außerdem ist es viel benutzerfreundlicher als die früheren Bild-Captchas.
Bevor Sie Google reCaptcha zu Ihrer Anwendung hinzufügen können, müssen Sie die folgenden Schritte ausführen:
1) Besorgen Sie sich die Anmeldeinformationen
2) Fügen Sie reCaptcha-Tags hinzu
3) Erstellen Sie eine Recaptcha-Klasse, um die Überprüfung zu handhaben.
4) Fügen Sie im Registrierungs-Controller die Methode verify_recaptcha hinzu.
Aufstellen
Schritt 1:-
Fügen Sie Folgendes zu Ihrer gem-Datei hinzu:
gem "recaptcha", :require => "recaptcha/rails"
Schritt 2:-
Melden Sie sich bei http://developers.google.com an, melden Sie sich bei Ihrem Google Mail-Konto an und suchen Sie nach "recaptcha". Klicken Sie auf "Anmeldung für einen API-SchlüsselLink". Überprüfen Sie den geheimen und den Standortschlüssel. Wie der Name schon sagt, sollte der geheime Schlüssel an einem sicheren Ort aufbewahrt werden, während der Standortschlüssel der öffentliche Schlüssel ist, der für die Authentifizierung bei Google verwendet wird. Registrieren Sie Ihren Site-Namen in Ihrem Google-Konto, um den öffentlichen und den privaten Schlüssel zu erhalten, die später in der Anwendung verwendet werden.
Nach der Registrierung erhalten Sie den öffentlichen Schlüssel und den privaten Schlüssel. Auf der Client-Seite wird der öffentliche Schlüssel an den Recaptcha-Dienst gesendet, um ein neues Captcha anzufordern. Der private Schlüssel wird auf der Serverseite verwendet, um zu überprüfen, ob der richtige Wert eingegeben wurde.
Registrieren Sie sich dann für einen reCAPTCHA-API-Schlüssel und fügen Sie diesen zu den Konfigurationsdateien Ihrer Umgebung hinzu:
#ragen Sie dies in development.rb und in production.rb ein
ENV_RECAPTCHA_PUBLIC_KEY= 'Ihr-öffentlicher-Schlüssel'
ENV_RECAPTCHA_PRIVATE_KEY= 'Ihr privater Schlüssel'
Schritt 3:-
Erstellen Sie eine Datei namens recaptcha.rb in config/initializers, um recaptcha-Parameter zu konfigurieren.
Recaptcha.configure do |config|
config.public_key = ' ENV_RECAPTCHA_PUBLIC_KEY'
config.private_key = 'ENV_RECAPTCHA_PRIVATE_KEY'
config.proxy = 'http://www.google.com/recaptcha/api/verify'
end
Schritt 4:-
Siehe
Der Captcha-Gem hilft dabei, das eigentliche Captcha-Feld darzustellen. Es ist so einfach, wie das Folgende in Ihre Ansicht an der Stelle zu setzen, wo Sie das Captcha erscheinen lassen möchten:
Wenn Sie SSL verwenden, benutzen Sie stattdessen dies:
true %>, Die SSL-Option stellt sicher, dass wir eine https-Anfrage an den recaptcha-Dienst senden.
Schritt 5:-
Controller
Das Captcha-Gem bietet eine weitere Hilfsmethode, die an den reCaptcha-API-Server sendet, um zu überprüfen, ob die Eingabe korrekt ist. Wenn dies der Fall ist, gibt die Methode "true" zurück. Wenn nicht, wird eine benutzerdefinierte Fehlermeldung, dass das reCaptcha falsch ist, zur Modellinstanz hinzugefügt. Hier ist der grundlegende Code, wie Sie ihn in der create-Aktion Ihres Controllers haben könnten:- In devise controllers, app/controllers/registrations_controller.rb, fügen Sie den folgenden Code ein: require 'recaptcha.rb' before_action :verify_recaptcha, only: [:create] def verify_recaptcha response = Recaptcha.verify(params) session[:sign_up] = params[:user].except(:password, :password_confirmation, :remoteip) if response.code == 200 if response['success'] flash[:notice] = "Recaptcha-Überprüfung erfolgreich." sonst redirect_to new_user_registration_path(user: params[:user]), alert: "Fehler bei der erneuten Überprüfung des Captcha." end sonst redirect_to new_user_registration_path(user: params[:user]), alert: "HTTP-Verbindungsfehler." end endDie Session[:sign_up] wird persistiert, da das Anmeldeformular vorausgefüllt werden kann, wenn die Verifizierung fehlschlägt.
Abonnieren Sie die neuesten Updates
zusammenhängende Posts