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

Schritte
1
Einführung
2
Erstellen Sie die Basisanwendung
3
Benötigen eine Telefonnummer
4
Senden Sie den Überprüfungsantrag
5
Überprüfen Sie den Verifizierungscode
6
Probieren Sie es aus!