Suche…


Einführung

Devise ist ein sehr mächtiges Juwel, mit dem Sie sich direkt nach der Installation anmelden, an- und abmelden können. Darüber hinaus kann der Benutzer seinen Anwendungen Authentifizierungen und Einschränkungen hinzufügen. Devise enthält auch eigene Ansichten, wenn der Benutzer dies verwenden möchte. Ein Benutzer kann die Anmelde- und Anmeldeformulare je nach Bedarf und Anforderung anpassen. Es wird darauf hingewiesen, dass Devise empfiehlt, dass Sie Ihr eigenes Login implementieren, wenn Sie noch nicht mit Rail vertraut sind.

Bemerkungen

Zum Zeitpunkt der Generierung von devise-Konfigurationen mithilfe von schienen rails generate devise:install , listet devise eine Reihe von Anweisungen auf dem Terminal auf, die zu befolgen sind.

Wenn Sie bereits über ein USER Modell verfügen, können Sie mit diesem Befehlsschienengenerator rails generate devise USER erforderlichen Spalten an Ihr vorhandenes USER Modell anhängen.

Verwenden Sie diese before_action :authenticate_user! oben auf dem Controller, um zu überprüfen, ob der user angemeldet ist oder nicht. Andernfalls werden sie auf die Anmeldeseite umgeleitet.

Authentifizierung mit Devise

Edelstein zum Gemfile hinzufügen:

gem 'devise'

Führen Sie dann den Befehl zum bundle install Pakets aus.

Verwenden Sie den Befehl $ rails generate devise:install , um die erforderliche Konfigurationsdatei zu generieren.

Richten Sie die Standard-URL-Optionen für den Devise-Mailer in jeder Umgebung ein. Fügen Sie in der Entwicklungsumgebung folgende Zeile hinzu:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

in Ihre config/environments/development.rb

In ähnlicher Weise bearbeiten Sie diese Datei in der Datei config/environments/production.rb und fügen Sie hinzu

config.action_mailer.default_url_options = { host: 'your-site-url'}

Erstellen Sie anschließend ein Modell mit folgendem $ rails generate devise USER : $ rails generate devise USER Wobei USER der Klassenname ist, für den Sie die Authentifizierung implementieren möchten.

Zum Schluss: rake db:migrate und du bist fertig.

Benutzerdefinierte Ansichten

Wenn Sie Ihre Ansichten konfigurieren müssen, können Sie den Generatoren für die rails generate devise:views , der alle Ansichten in Ihre Anwendung kopiert. Sie können sie dann wie gewünscht bearbeiten.

Wenn sich in Ihrer Anwendung mehr als ein Devise-Modell befindet (z. B. Benutzer und Administrator), werden Sie feststellen, dass Devise für alle Modelle die gleichen Ansichten verwendet. Devise bietet eine einfache Möglichkeit, Ansichten anzupassen. config.scoped_views = true Sie config.scoped_views = true in der Datei config/initializers/devise.rb .

Sie können den Generator auch verwenden, um Bereichsansichten zu erstellen: rails generate devise:views users

Wenn Sie nur einige Ansichten erstellen möchten, beispielsweise die für das registrierbare und bestätigbare Modul, verwenden Sie das Flag -v: rails generate devise:views -v registrations confirmations

Entwickeln Sie Controller-Filter und Helfer

Um einen Controller mit Benutzerauthentifizierung mit devise einzurichten, fügen Sie Folgendes vor before_action hinzu: (vorausgesetzt, Ihr Devise-Modell ist 'User'):

before_action :authenticate_user!

Um zu überprüfen, ob ein Benutzer angemeldet ist, verwenden Sie den folgenden Helfer:

user_signed_in?

Verwenden Sie für den aktuell angemeldeten Benutzer diesen Helfer:

current_user

Sie können auf die Sitzung für diesen Bereich zugreifen:

user_session

  • Wenn Ihr Devise-Modell als Member statt User , ersetzen Sie den obigen user durch member

Omniauth

Wählen Sie zuerst Ihre Auth-Strategie und fügen Sie sie Ihrem Gemfile . Eine Liste der Strategien finden Sie hier: https://github.com/intridea/omniauth/wiki/List-of-Strategies

gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'

Sie können dies Ihrer Rail-Middleware wie folgt hinzufügen:

Rails.application.config.middleware.use OmniAuth::Builder do
  require 'openid/store/filesystem' 
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
  provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end

Standardmäßig fügt OmniAuth den Routen /auth/:provider , und Sie können mit diesen Pfaden beginnen.

Wenn ein Fehler auftritt, wird Omniauth standardmäßig zu /auth/failure umgeleitet

has_secure_password

Erstellen Sie ein Benutzermodell

rails generate model User email:string password_digest:string

Fügen Sie dem Benutzermodell das Modul has_secure_password hinzu

class User < ActiveRecord::Base
  has_secure_password
end

Jetzt können Sie einen neuen Benutzer mit Passwort erstellen

user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'

Überprüfen Sie das Kennwort mit der Authentifizierungsmethode

user.authenticate('somepassword')  

has_secure_token

Erstellen Sie ein Benutzermodell

# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
  has_secure_token
  has_secure_token :auth_token
end

Wenn Sie nun einen neuen Benutzer erstellen, werden automatisch ein Token und ein auth_token generiert

user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"

Sie können die Token mit regenerate_token und regenerate_auth_token aktualisieren

user.regenerate_token # => true
user.regenerate_auth_token # => true


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow