Ruby on Rails
Authentification utilisateur dans Rails
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 USER
Où USER
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 deUser
, remplacez l'user
ci-dessus parmember
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