L'authentification des utilisateurs est une fonctionnalité de sécurité essentielle pour les applications Web, en particulier celles qui traitent des données utilisateur sensibles ou fournissent un accès restreint à certaines fonctionnalités. En demandant aux utilisateurs de s'authentifier avant d'accéder à l'application, les développeurs peuvent s'assurer que seuls les utilisateurs autorisés peuvent afficher ou modifier les données et les fonctionnalités de l'application.
Devise est un Ruby Gem qui fournit des fonctionnalités d'authentification et d'autorisation des utilisateurs pour les applications Rails. Il réduit le processus d'ajout de fonctionnalités d'inscription, de connexion et de déconnexion à votre application sans avoir à tout écrire à partir de zéro.
Il possède des fonctionnalités intégrées telles que la réinitialisation du mot de passe et la confirmation du compte. Il prend en charge diverses stratégies d'authentification telles que l'e-mail et le mot de passe, OAuth, OpenID, etc.
Devise a une documentation détaillée qui couvre à la fois les fonctionnalités de base et avancées.
Dans ce didacticiel, nous allons créer une application Rails simple avec Devise qui permet aux utilisateurs de créer des comptes, de se connecter et de se déconnecter de leurs comptes. Nous verrons également comment ajouter du style à l'application à l'aide de Bootstrap.
Avant de commencer ce didacticiel, vous devez avoir une bonne compréhension des bases de Ruby et de Rails. De plus, vous devez avoir les logiciels suivants installés sur votre ordinateur :
Nous verrons également comment utiliser Bootstrap dans Rails 7 plus tard dans le didacticiel.
rails new authApp
Cela générera une nouvelle application Rails appelée authApp
dans un répertoire authApp
. Ouvrez ce répertoire dans votre éditeur de texte préféré.
cd authApp
rails server
Générez un nouveau contrôleur qui gérera la requête vers le chemin racine à l'aide de la commande : $rails generate controller home index
Cela crée un nouveau contrôleur nommé `Home` avec une action `index`.
Ajoutez le chemin racine au fichier routes.rb
dans le dossier 'config' en ajoutant la ligne suivante : root 'home#index'
Dans le répertoire app/views/home
, vous trouverez un nouveau fichier appelé index.html.erb
. Cette vue contiendra le code HTML de votre page de destination.
Redémarrez le serveur et vérifiez l' hôte local dans votre navigateur Web pour afficher votre page de destination nouvellement créée.
cat config/importmap.rb
. Si vous ne le faites pas, exécutez rails importmap:install
$ bin/importmap pin bootstrap
. Cela ajoute JS, bootstrap et popperjs à config/importmap.rb
.app/javascript/application.js
en utilisant import 'bootstrap';
.gem 'bootstrap', '~> 5.1.3'
à votre Gemfile et lancez bundle install
.app/assets/stylesheets/application.css
, importez Bootstrap en utilisant @import "bootstrap";
et renommez le fichier en application.scss
.app/views/layouts/application.html.erb
contient : <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> <%= javascript_importmap_tags %>
app/views/home/index.html.rb
.
Accédez au fichier Gemfile et ajoutez le gem Devise à l'aide de la commande :
gem 'devise', github: 'heartcombo/devise', branch: 'main'
Exécutez bundle install
pour installer Devise.
Exécutez rails g devise:install
pour configurer Devise dans votre projet. Cela génère plusieurs fichiers de démarrage pour Devise et fournit des instructions dans le terminal.
Décommentez la ligne config.navigational_formats = ['*/*', :html, :turbo_stream]
dans le fichier devise.rb
. Cela ajoute turbo_stream en tant que format de navigation, qui est requis pour que Devise 4.9.2 fonctionne avec Rails 7. Si vous ne le faites pas, une erreur undefined method user_url
se produira.
Ouvrez app/layouts/applications.html.erb
et ajoutez les lignes suivantes pour les messages de notification et d'alerte :
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
Pour créer un modèle utilisateur avec Devise, lancez rails g devise user
dans le terminal. Cela générera les fichiers et la configuration nécessaires à la mise en œuvre de l'authentification des utilisateurs.
Créez la table utilisateur en exécutant la commande de migration : rails db:migrate
.
Redémarrez le serveur pour charger le nouveau fichier d'initialisation Devise et configurez tout pour que l'authentification des utilisateurs fonctionne.
Accédez à http://localhost:3000/users/sign_up
dans votre navigateur pour accéder au formulaire d'inscription afin de créer un compte en entrant un e-mail et un mot de passe.
Accédez au fichier index.html.erb
et ajoutez les lignes de code suivantes :
<% if user_signed_in? %> <p>Welcome, <%= current_user.email %>!</p> <%= link_to "Sign out", destroy_user_session_path, method: :delete %> <% else %> <%= link_to "Sign in", new_user_session_path %> <% end %>
Ces lignes créent des liens d'inscription, de connexion et de déconnexion pour votre application. user_signed_in
est une méthode d'assistance fournie par Devise qui renvoie true si l'utilisateur actuel est connecté et false sinon.
Pour consulter les modifications, il vous suffit d'actualiser la page dans votre navigateur. Si vous n'êtes pas encore connecté, un bouton de connexion sera visible à l'écran. Cliquez dessus et terminez le processus d'inscription. Une fois que vous vous êtes inscrit avec succès, vous serez dirigé vers la page d'accueil où vous pourrez voir l'adresse e-mail de l'utilisateur actuellement connecté, un message de bienvenue et un bouton de déconnexion.
En suivant ces étapes, vous avez réussi à intégrer la gemme Devise et à configurer l'authentification des utilisateurs pour votre application.
Dans ce didacticiel, nous avons utilisé Devise pour ajouter l'authentification des utilisateurs à notre application Rails. Nous avons développé une application où les utilisateurs peuvent créer des comptes, s'inscrire et se déconnecter. Nous avons également intégré Bootstrap pour améliorer l'apparence du projet. Pour approfondir vos connaissances sur Devise et explorer d'autres aides et méthodes, reportez-vous au fichier README sur le référentiel Devise GitHub.