Laravel : Enregistrer les sessions des utilisateurs dans la Base de données

Mis à jour il y a 3 ans

Un tutoriel pour enregistrer les informations de session des utilisateurs dans la base de données au lieu des fichiers.

Wilo Ahadi

Auteur

Wilo A.

Technologies

Laravel, PHP
Voir aussi Un tutoriel pour définir votre propre page d'erreur 404 pour les requêtes entrantes qui ne correspondent pas aux routes enregistrées dans un projet Laravel En savoir plus

Introduction

Le protocole HTTP étant sans état, les sessions offrent un moyen de stocker les informations de l'utilisateur à travers les requêtes HTTP.

Par défaut, Laravel enregistre les informations de session des utilisateurs dans des fichiers. Nous pouvons le voir à travers le fichier config/session.php où la configuration des sessions est définie :

...
'driver' => env('SESSION_DRIVER', 'file')
...

Cette ligne montre que le "driver" (pilote) pour la session est renseigné par la variable "SESSION_DRIVER" au fichier .env avec "file" comme valeur par défaut.

En cherchant cette variable au fichier .env, nous trouvons cette ligne :

...
SESSION_DRIVER=file
...

Les informations des sessions sont donc enregistrées dans des fichiers que nous pouvons retrouver au répertoire storage/framework/sessions.

Hormis utiliser les fichiers pour sauvegarder les informations de session, Laravel propose d'autres moyens tels que les cookies, memcached, redis, ... Nous allons voir au point suivant comment enregistrer ces informations dans la base de données.

Les informations de session dans la base de données

Pour enregistrer les informations des sessions des utilisateurs dans la base de données, nous avons besoin de :

  1. Créer la table "sessions" pour stocker les informations
  2. Changer le driver de session

1. Générer la table des sessions

Ouvrez la console (l'invite de commandes) à la racine de votre projet, exécutez la commande suivante pour créer le fichier de migration de la table "sessions" (database/migrations/..._create_sessions_table.php) :

php artisan session:table

Ensuite la commande suivante pour migrer la table "sessions" :

php artisan migrate

La table "sessions" se présente de la manière suivante :

La table sessions de Laravel

Elle nous donne accès aux informations suivantes de l'utilisateur :

  • son identifiant s'il est authentifié (user_id)
  • son adresse IP (ip_address)
  • le navigateur qu'il utilise (user_agent)
  • les données de sa session dans payload
  • le timestamp de sa dernière activité (last_activity)

2. Changer le driver des sessions

Editez le fichier .env en modifiant la valeur "file" en "database" pour la variable "SESSION_DRIVER " :

...
SESSION_DRIVER=database
...

Et lorsque maintenant un utilisateur viendra sur l'application, nous aurons ses informations dans la table "sessions" :

Informations dans la table sessions

Avec les informations collectées, nous pouvons compter le nombre d'utilisateurs authentifiés, connaître les navigateurs qu'ils utilisent le plus, faire des statistiques, ...

Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.

Wilo Ahadi

Wilo Ahadi, l'auteur

Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School

Voir profil

Commentaires