• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 31/07/2020

Maintenez la connexion avec les sessions

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Après les variables spéciales params et flash, j’ai le plaisir de vous en présenter une nouvelle : session. Tous les couples clé-valeur de ce dernier persistent d’une page à l’autre. Exemple :

# app/controllers/users_controller.rb
def login
session[:test] = "Valeur de test"
end
# app/views/users/home.html.erb
<h1>Bienvenue !</h1>
<%= session[:test] %>
<a href="/users/login">S'identifier</a>

Allez ensuite sur http://localhost:3000/users/login pour modifier la variable de session dans le contrôleur, puis sur http://localhost:3000/users/home pour afficher la valeur de la variable de session. Vous verrez alors "Valeur de test" à l’écran alors que la fonction home du contrôleur est vide.

Utilisez ce mécanisme pour mémoriser l’identifiant de l’utilisateur connecté :

# app/controllers/users_controller.rb
class UsersController < ApplicationController
def home
if session[:user_id]
@current_user = User.find(session[:user_id])
end
end
def login
end
def check
@current_user = User.where(name: params[:name], password: params[:password]).first
if @current_user
session[:user_id] = @current_user.id
flash[:info] = "Vous êtes maintenant connecté"
redirect_to "/users/home"
else
session[:user_id] = nil
flash[:info] = "Échec de la connexion"
redirect_to "/users/login"
end
end
end
# app/views/users/home.html.erb
<% if @current_user %>
<h1>Bienvenue <%= @current_user.name %> !</h1>
<% else %>
<h1>Bienvenue visiteur anonyme !</h1>
<a href="/users/login">S'identifier</a>
<% end %>

Et voilà, la connexion persiste !

Exemple de certificat de réussite
Exemple de certificat de réussite