Recherche…


Introduction

Devise est un joyau très puissant, il vous permet de vous inscrire, de vous connecter et de vous déconnecter après l'installation. De plus, l'utilisateur peut ajouter des authentifications et des restrictions à ses applications. Devise est également livré avec ses propres vues, si l'utilisateur veut utiliser. Un utilisateur peut également personnaliser les formulaires d'inscription et de connexion en fonction de ses besoins et de ses exigences. Il convient de noter que Devise vous recommande d’implémenter votre propre identifiant si vous êtes novice dans le domaine des rails.

Remarques

Au moment de générer des configurations à l’aide de rails generate devise:install outils rails generate devise:install , inventer listera des instructions sur le terminal à suivre.

Si vous avez déjà un modèle USER , l'exécution de cette commande de rails generate devise USER pour ajouter les colonnes nécessaires à votre modèle USER existant.

Utilisez cette méthode d'assistance before_action :authenticate_user! en haut de votre contrôleur pour vérifier si l' user est connecté ou non. sinon, ils seront redirigés vers la page de connexion.

Authentification avec Devise

Ajouter une gemme au Gemfile:

gem 'devise'

Ensuite, exécutez la commande d' bundle install l' bundle install .

Utilisez la commande $ rails generate devise:install pour générer le fichier de configuration requis.

Configurez les options d'URL par défaut du mailer Devise dans chaque environnement Dans l'environnement de développement, ajoutez cette ligne:

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

à votre config/environments/development.rb

de même dans la production ceci éditer le fichier config/environments/production.rb et ajouter

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

Créez ensuite un modèle en utilisant: $ rails generate devise USERUSER est le nom de classe pour lequel vous souhaitez implémenter l'authentification.

Enfin, lancez: rake db:migrate et vous êtes tous ensemble.

Affichages personnalisés

Si vous avez besoin de configurer vos vues, vous pouvez utiliser le générateur de générateur de rails generate devise:views qui copiera toutes les vues dans votre application. Ensuite, vous pouvez les modifier comme vous le souhaitez.

Si vous avez plusieurs modèles Devise dans votre application (par exemple, User et Admin), vous remarquerez que Devise utilise les mêmes vues pour tous les modèles. Devise offre un moyen simple de personnaliser les vues. Définissez config.scoped_views = true dans le config.scoped_views = true config/initializers/devise.rb .

Vous pouvez également utiliser le générateur pour créer des vues scope: rails generate devise:views users de rails generate devise:views users les rails generate devise:views users

Si vous souhaitez générer quelques ensembles de vues, comme celles du module et confirmable utiliser enregistrable le drapeau -v: rails generate devise:views -v registrations confirmations

Devise Controller Filters & Helpers

Pour configurer un contrôleur avec authentification de l'utilisateur à l'aide de la commande, ajoutez ceci before_action: (en supposant que le modèle de votre appareil est "Utilisateur"):

before_action :authenticate_user!

Pour vérifier si un utilisateur est connecté, utilisez l'aide suivante:

user_signed_in?

Pour l'utilisateur connecté actuel, utilisez cet assistant:

current_user

Vous pouvez accéder à la session pour cette portée:

user_session

  • Notez que si votre modèle Devise est appelé Member au lieu de User , remplacez l' user ci-dessus par member

Omniauth

Choisissez d'abord votre stratégie d'authentification et ajoutez-la à votre Gemfile . Vous pouvez trouver une liste de stratégies ici: https://github.com/intridea/omniauth/wiki/List-of-Strategies

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

Vous pouvez ajouter ceci à votre middleware de rails comme ceci:

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

Par défaut, OmniAuth ajoutera /auth/:provider à vos routes et vous pourrez commencer par utiliser ces chemins.

Par défaut, en cas d’échec, omniauth redirigera vers /auth/failure

has_secure_password

Créer un modèle d'utilisateur

rails generate model User email:string password_digest:string

Ajouter le module has_secure_password au modèle utilisateur

class User < ActiveRecord::Base
  has_secure_password
end

Maintenant, vous pouvez créer un nouvel utilisateur avec mot de passe

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

Vérifier le mot de passe avec la méthode d'authentification

user.authenticate('somepassword')  

has_secure_token

Créer un modèle d'utilisateur

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

Maintenant, lorsque vous créez un nouvel utilisateur, un jeton et auth_token sont automatiquement générés

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

Vous pouvez mettre à jour les jetons à l'aide de regenerate_token et regenerate_auth_token

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


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