• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 7/31/20

Maintenez la connexion avec les sessions

Log in or subscribe for free to enjoy all this course has to offer!

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 !

Example of certificate of achievement
Example of certificate of achievement