Suche…


Einführung

Devise ist eine Authentifizierungslösung für Rails. Bevor ich weiter gehe, möchte ich noch eine kurze Anmerkung zur API hinzufügen. Daher behandelt die API keine Sitzungen (ist zustandslos), dh eine, die nach Ihrer Anforderung eine Antwort liefert, und erfordert dann keine weitere Aufmerksamkeit. Das bedeutet, dass kein früherer oder zukünftiger Status erforderlich ist, damit das System funktioniert, wenn wir eine Anfrage an den Server stellen Authentifizierungsdetails mit allen APIs übergeben und sollte Devise anweisen, Authentifizierungsdetails nicht zu speichern.

Fertig machen

Zuerst werden wir ein Schienenprojekt und ein Setup-Gerät erstellen

Erstellen Sie eine Schienenanwendung

rails new devise_example

füge jetzt der Edelsteinliste Gerät hinzu

Sie finden eine Datei mit dem Namen 'Gemfile' im Stammverzeichnis des rail-Projekts

Führen Sie dann die bundle install

Als Nächstes müssen Sie den Generator ausführen:

rails generate devise:install

Nun können Sie auf der Konsole einige Anweisungen finden, die Sie befolgen.

Erstellen Sie das Modellmodell

rails generate devise MODEL

Führen Sie dann rake db:migrate

Weitere Informationen finden Sie unter: Devise Gem


Authentifizierungs-Token

Das Authentifizierungstoken wird verwendet, um einen Benutzer mit einem eindeutigen Token zu authentifizieren. Bevor wir mit der Logik fortfahren, müssen wir einem Devise-Modell das Feld auth_token hinzufügen

Daher,

rails g migration add_authentication_token_to_users

class AddAuthenticationTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :auth_token, :string, default: ""
    add_index :users, :auth_token, unique: true
  end
end

Führen Sie dann rake db:migrate

Jetzt sind wir auth_token , die Authentifizierung mit auth_token

In app/controllers/application_controllers.rb

Zuerst diese Linie dazu

respond_to :html, :json 

Dies hilft Rails-Anwendungen, sowohl mit HTML als auch mit Json zu reagieren

Dann

protect_from_forgery with: :null

wird dies ändern :null da wir uns nicht mit Sitzungen beschäftigen.

Jetzt fügen wir in application_controller eine Authentifizierungsmethode hinzu

Standardmäßig verwendet Devise email als eindeutiges Feld. Wir können auch benutzerdefinierte Felder verwenden. In diesem Fall authentifizieren wir uns mit user_email und auth_token.

  before_filter do
    user_email = params[:user_email].presence
    user       = user_email && User.find_by_email(user_email)

    if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
      sign_in user, store: false
    end
  end

Hinweis: Der obige Code basiert rein auf Ihrer Logik. Ich versuche nur, das Arbeitsbeispiel zu erklären

In Zeile 6 im obigen Code können Sie sehen, dass ich store: false wodurch verhindert werden kann, dass für jede Anforderung eine Sitzung erstellt wird



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