• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/01/2017

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