Perte des variables de session après redirection

Sur un des projets Laravel (version 8) sur lequel je travaille actuellement, j’ai été confronté à un problème récemment : les messages flash avec une redirection ne s’affichaient plus. En débuguant mon code PHP, je me suis aperçu que les variables de session ne persistaient pas après la redirection.

Ci-dessous un exemple de redirection avec un message flash d’erreur qui ne fonctionnait plus. Ici l’utilisateur n’a pas saisi correctement son mot de passe.

if (!(Hash::check($request->get('current-password'), Auth::user()->password))) {
   // The passwords matches
   return redirect()->back()->with("error","Le mot de passe actuel n'a pas été correctement saisi, réessayez.");
}

 

Une solution pour rétablir la persistance des variables de session après une redirection

J’ai trouvé la solution à mon problème sur le Forum Laracasts dans un post intitulé « Session variables not saving / persisting after redirect ».

Configuration côté middleware

  • Allez dans le fichier app/kernal.php
  • Ajoutez \Illuminate\Session\Middleware\StartSession::class, dans le tableau protected $middleware.
  • Supprimez le de protected $middlewareGroups si il existe.

C’est ce dernier point qui m’a permis de résoudre mon problème et de pouvoir à nouveau retourner un message flash après une redirection.

Affichage d'un message flash d'erreur après redirection