Senden Sie den Überprüfungsantrag
Jetzt, da ein Benutzer seine Telefonnummer zu seinem Account hinzufügen kann, können Sie diese Nummer verwenden, um ihn zu verifizieren, wenn er sich auf der Website anmeldet.
Um die Verify-API zu verwenden, müssen Sie die vonage zu Ihrem Projekt hinzufügen. Sie müssen auch die Konfiguration der vonage gem, um Ihren API-Schlüssel und Ihr Geheimnis zu verwenden, die Sie aus einer .env Datei.
Fügen Sie die folgenden Zeilen in die Anwendung Gemfile:
gem 'vonage'
gem 'dotenv-rails', groups: [:development, :test]
Erstellen Sie dann eine .env Datei im Routenverzeichnis Ihrer Anwendung und konfigurieren Sie sie mit Ihrem API-Schlüssel und -Geheimnis, die Sie in der Dashboard für Entwickler:
.env
VONAGE_API_KEY=your_api_key
VONAGE_API_SECRET=your_api_secret
Hinzufügen einer before_action zu Ihrem ApplicationController die überprüft, ob der Benutzer die Zwei-Faktor-Authentifizierung aktiviert hat. Wenn dies der Fall ist, stellen Sie sicher, dass sie verifiziert werden, bevor sie fortfahren dürfen:
app/controllers/application_controller.rb
before_action :verify_user!, unless: :devise_controller?
def verify_user!
start_verification if requires_verification?
end
Um festzustellen, ob der Benutzer eine Überprüfung benötigt, prüfen Sie, ob er sich mit einer Telefonnummer registriert hat und ob die :verified Session-Eigenschaft nicht gesetzt wurde:
app/controllers/application_controller.rb
def requires_verification?
session[:verified].nil? && !current_user.phone_number.blank?
end
Um den Verifizierungsprozess zu starten, rufen Sie send_verification_request über die Vonage::Client Objekt. Sie brauchen Ihren API-Schlüssel und Ihr Geheimnis nicht zu übergeben, da es bereits durch die Umgebungswerte initialisiert wurde, die Sie in .env:
app/controllers/application_controller.rb
def start_verification
result = Vonage::Client.new.verify.request(
number: current_user.phone_number,
brand: "Kittens and Co",
sender_id: 'Kittens'
)
if result['status'] == '0'
redirect_to edit_verification_path(id: result['request_id'])
else
sign_out current_user
redirect_to :new_user_session, flash: {
error: 'Could not verify your number. Please contact support.'
}
end
end
Beachten Sie, dass Sie der Verifizierungsanfrage den Namen der Webanwendung übergeben. Dieser wird in der Textnachricht verwendet, die der Benutzer erhält, damit er erkennen kann, woher sie stammt.
Wenn die Nachricht erfolgreich gesendet wurde, müssen Sie den Benutzer auf eine Seite weiterleiten, auf der er den erhaltenen Code eingeben kann. Sie werden dies tun und im nächsten Schritt überprüfen, ob der Code korrekt ist.
Zwei-Faktor-Authentifizierung für Sicherheit und Spamschutz
Lernen Sie, wie Sie 2fa in Ihre Ruby-Applikationen implementieren