Recherche…


Introduction

Devise est une solution d'authentification pour Rails. Avant d'aller plus loin, j'aimerais ajouter une note rapide sur l'API. Donc, l'API ne gère pas les sessions (sans état), ce qui signifie une réponse après votre demande, et ne nécessite alors aucune attention supplémentaire, ce qui signifie qu'aucun état antérieur ou futur n'est requis pour que le système fonctionne transmettre les détails d'authentification à toutes les API et indiquer à Devise de ne pas stocker les détails de l'authentification.

Commencer

Nous allons donc d'abord créer un projet de rails et un dispositif de configuration

créer une application de rails

rails new devise_example

Maintenant, ajoutez le concept à la liste de gemme

vous pouvez trouver un fichier nommé 'Gemfile' à la racine du projet rails

Puis lancez l’ bundle install

Ensuite, vous devez lancer le générateur:

rails generate devise:install

Maintenant, sur la console, vous pouvez trouver quelques instructions juste suivre.

Générer un modèle de modèle

rails generate devise MODEL

Puis lancez rake db:migrate

Pour plus de détails, allez à: Devise Gem


Jeton d'authentification

Le jeton d'authentification est utilisé pour authentifier un utilisateur avec un jeton unique. Avant de procéder à la logique, nous devons d'abord ajouter le champ auth_token à un modèle Devise.

Par conséquent,

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

Puis lancez rake db:migrate

Maintenant, nous sommes tous prêts à faire de l'authentification avec auth_token

Dans app/controllers/application_controllers.rb

Tout d'abord cette ligne à elle

respond_to :html, :json 

cela aidera l'application rails à répondre avec à la fois HTML et json

alors

protect_from_forgery with: :null

va changer ceci :null car nous ne traitons pas avec les sessions.

maintenant, nous allons ajouter une méthode d'authentification dans application_controller

Ainsi, par défaut, Devise utilise le courrier électronique comme champ unique. Nous pouvons également utiliser des champs personnalisés. Dans ce cas, nous nous authentifierons avec user_email et 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

Note: Le code ci-dessus est purement basé sur votre logique j'essaie juste d'expliquer l'exemple de travail

Sur la ligne 6 du code ci-dessus, vous pouvez voir que j'ai défini store: false ce qui empêchera de créer une session sur chaque requête.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow