Articles

Que sont les sessions dans Laravel, configuration et utilisation avec des exemples

Les sessions Laravel vous permettent de stocker des informations et de les échanger entre les requêtes de votre application Web. 

Ils constituent un moyen simple de conserver des données pour l'utilisateur actuel. Ce tutoriel vous donnera les bases du travail avec des sessions dans Laravel.

Qu'est-ce qu'une session Laravel

Dans Laravel, une session est un moyen de stocker des informations, de gérer correctement les requêtes faites par un utilisateur. Lorsqu'un utilisateur démarre une application Laravel, une session est automatiquement lancée pour cet utilisateur. Les données de session sont stockées sur le serveur et un petit cookie avec un identifiant unique est envoyé au navigateur de l'utilisateur pour identifier la session.

Vous pouvez utiliser la session pour stocker les données que vous souhaitez utiliser sur plusieurs pages ou requêtes. Par exemple, vous pouvez utiliser la session pour l'authentification des utilisateurs ou stocker d'autres informations que vous souhaitez utiliser pendant la session sur votre application.

Configuration de session dans Laravel

Pour utiliser des sessions dans Laravel, vous devez d'abord les activer dans le fichier config/session.php de configuration. Dans ce fichier, il est possible de définir les paramètres de configuration liés aux sessions. Tels que la durée de la session, le pilote à utiliser pour stocker les données de session et l'emplacement de stockage des données de session. 

Le fichier a les options de configuration suivantes :
  • driver: Spécifie le pilote de pré-sessiondefiprêt à l'emploi. Laravel prend en charge plusieurs pilotes de session : fichier, cookie, base de données, apc, memcached, redis, dynamodb et array ;
  • durée de vie: Spécifie le nombre de minutes pendant lesquelles la session doit être considérée comme valide ;
  • expire_on_close: Si la valeur est true, la session expirera lorsque le navigateur de l'utilisateur sera fermé ;
  • crypter: true signifie que le framework chiffrera les données de session avant qu'elles ne soient stockées ;
  • fichiers: Si le pilote de session de fichiers est utilisé, cette option spécifie l'emplacement de stockage des fichiers ;
  • connexion: Si le pilote de session de base de données est utilisé, cette option spécifie la connexion à la base de données à utiliser ;
  • table: Si le pilote de session de base de données est utilisé, cette option spécifie la table de base de données à utiliser pour stocker les données de session ;
  • loterie: Un tableau de valeurs utilisé pour sélectionner au hasard une valeur de cookie d'ID de session ;
  • gâteau: Cette option spécifie le nom du cookie qui sera utilisé pour stocker l'ID de session. Les options path, domain, secure, http_only et same_site sont utilisées pour configurer les paramètres des cookies pour la session.

Ci-dessous un exemple de fichier sessions.php avec une durée de session de 120 secondes, utilisation des fichiers stockés dans le répertoire framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

Vous pouvez également configurer la session en utilisant des variables d'environnement dans le fichier .env. Par exemple, pour utiliser le pilote de session de base de données et stocker les données de session dans une table de session, avec une base de données de type MySQL, vous pouvez définir les variables d'environnement suivantes :

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Configuration de la session Laravel

Il existe trois façons de travailler avec les données de session dans Laravel : 

  • en utilisant lehelper de global session;
  • en utilisant la façade Session;
  • à travers un Request instance

Dans tous ces cas, les données que vous stockez dans la session seront disponibles dans les requêtes ultérieures effectuées par le même utilisateur jusqu'à ce que la session expire ou soit détruite manuellement.

Bulletin d'innovation
Ne manquez pas les nouvelles les plus importantes sur l'innovation. Inscrivez-vous pour les recevoir par email.

Assistant de session globale

Dans Laravel, en utilisant la fonction Global Session Helper c'est un moyen pratique d'accéder aux services de session fournis par le framework. Il vous permet de stocker et de récupérer des données de la session dans votre application. Voici un exemple d'utilisation du session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

Vous pouvez également passer une pré-valeurdefinite comme deuxième argument de la fonction session, qui sera renvoyé si la clé spécifiée n'est pas trouvée dans la session :

$value = session('key', 'default');

Exemple de Session Request

Dans Laravel, une instance de requête de session fait référence à un objet qui représente une requête HTTP et contient des informations sur la requête, telles que la méthode de requête (GET, POST, PUT, etc.), l'URL de la requête, les en-têtes de la requête et le corps de la requête. . Il contient également diverses méthodes qui peuvent être utilisées pour récupérer et manipuler ces informations.

Généralement, vous accédez à l'instance de Session Request par la variable $request dans une application Laravel. Par exemple, une session est accessible via une instance de requête à l'aide de la fonction d'assistance session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

Dans cet exemple, la variable  $request c'est une instance de la classe Illuminate\Http\Request, qui représente la requête HTTP actuelle. La fonction session instance de requête renvoie une instance de la classe Illuminate\Session\Store, qui fournit diverses fonctions pour travailler avec la session.

Ercole Palmeri

Bulletin d'innovation
Ne manquez pas les nouvelles les plus importantes sur l'innovation. Inscrivez-vous pour les recevoir par email.

Articles récents

La nouvelle intelligence artificielle de Google peut modéliser l'ADN, l'ARN et « toutes les molécules de la vie »

Google DeepMind présente une version améliorée de son modèle d'intelligence artificielle. Le nouveau modèle amélioré offre non seulement…

9 mai 2024

Explorer l'architecture modulaire de Laravel

Laravel, célèbre pour sa syntaxe élégante et ses fonctionnalités puissantes, constitue également une base solide pour l'architecture modulaire. Là…

9 mai 2024

Cisco Hypershield et acquisition de Splunk La nouvelle ère de la sécurité commence

Cisco et Splunk aident leurs clients à accélérer leur transition vers le centre d'opérations de sécurité (SOC) du futur avec…

8 mai 2024

Au-delà du côté économique : le coût peu évident des ransomwares

Les ransomwares ont dominé l’actualité ces deux dernières années. La plupart des gens savent bien que les attaques…

6 mai 2024

Intervention innovante en réalité augmentée, avec une visionneuse Apple à la polyclinique de Catane

Une opération d'ophtalmoplastie à l'aide de la visionneuse commerciale Apple Vision Pro a été réalisée à la polyclinique de Catane…

3 mai 2024

Les avantages des pages à colorier pour les enfants - un monde de magie pour tous les âges

Développer la motricité fine grâce au coloriage prépare les enfants à des compétences plus complexes comme l’écriture. Colorier…

2 mai 2024

L’avenir est là : comment le secteur du transport maritime révolutionne l’économie mondiale

Le secteur naval est une véritable puissance économique mondiale, qui a navigué vers un marché de 150 milliards...

1 mai 2024

Les éditeurs et OpenAI signent des accords pour réguler les flux d'informations traitées par l'intelligence artificielle

Lundi dernier, le Financial Times a annoncé un accord avec OpenAI. FT autorise son journalisme de classe mondiale…

30 avril 2024