Ricerca…


introduzione

Devise è la soluzione di autenticazione per Rails. Prima di proseguire, vorrei aggiungere una breve nota sull'API. Quindi API non gestisce le sessioni (è stateless), ovvero una che fornisce una risposta dopo la richiesta, e quindi non richiede ulteriore attenzione, il che significa che non è richiesto alcun stato precedente o futuro affinché il sistema funzioni, quindi ogni volta che si richiede al server di passare i dettagli di autenticazione con tutte le API e indicare a Devise di non memorizzare i dettagli di autenticazione.

Iniziare

Quindi prima creeremo il progetto di rotaie e il dispositivo di installazione

creare un'applicazione per rotaie

rails new devise_example

ora aggiungi inventare alla lista delle gemme

puoi trovare un file chiamato 'Gemfile' nella radice del progetto rails

Quindi eseguire l' bundle install

Successivamente, è necessario eseguire il generatore:

rails generate devise:install

Ora su console puoi trovare poche istruzioni seguirlo.

Genera il modello di sviluppo

rails generate devise MODEL

Quindi esegui rake db:migrate

Per maggiori dettagli vai su: Devise Gem


Token di autenticazione

Il token di autenticazione viene utilizzato per autenticare un utente con un token univoco, quindi prima di procedere con la logica prima è necessario aggiungere il campo auth_token a un modello di auth_token

Quindi,

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

Quindi esegui rake db:migrate

Ora siamo tutti pronti per fare l'autenticazione usando auth_token

In app/controllers/application_controllers.rb

Prima questa linea ad esso

respond_to :html, :json 

questo aiuterà l'applicazione rails a rispondere sia con html che json

Poi

protect_from_forgery with: :null

cambierà questo :null dato che non abbiamo a che fare con le sessioni.

ora aggiungeremo il metodo di autenticazione in application_controller

Quindi, per impostazione predefinita, Devise utilizza l'e-mail come campo univoco che può anche utilizzare campi personalizzati, in questo caso verificheremo utilizzando user_email e 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

Nota: il codice sopra riportato si basa esclusivamente sulla tua logica, sto solo cercando di spiegare l'esempio di lavoro

Alla riga 6 del codice precedente puoi vedere che ho impostato store: false che impedirà di creare una sessione su ogni richiesta, quindi abbiamo ottenuto lo stateless



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow