2016-03-29 3 views
0

Une redirection avec données Flash doit-elle persister si les données intermédiaires sont concernées?Laravel 5.2 Les données Flash ne persistent pas

Quelques choses d'ordre administratif à noter que répondra à quelques questions de suivi possibles:

    1. J'appelle le middleware Web.
    1. J'utilise le pilote de session de fichiers.
    1. je peux récupérer les valeurs stockées dans la session, à l'exception des données flashé.
    1. J'ai essayé reflasher les données flashé en ajoutant la ligne suivante au middleware Authentifier:
       
      $request->session()->reflash(); 
      

En tant que tel, Authenticate.php maintenant apparaît comme suit:

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->guest()) { 
     if ($request->ajax() || $request->wantsJson()) { 
      return response('Unauthorized.', 401); 
     } else { 
      return redirect()->guest('login'); 
     } 
    } 

    $request->session()->reflash(); 

    return $next($request); 
} 

Ce problème affecte également le boilerplate auth produit par marque: auth, entraînant les erreurs $ ne pour afficher en cas d'erreur.

MISE À JOUR (3/29 @ 8:54 HNE)

Je découvert ce que je crois avoir été la cause, comme vous le verrez ci-dessous. Chaque route appelait le middleware 'web' deux fois. En tant que tel, deux demandes étaient en cours qui supprimaient le (s) message (s) flash avant que l'utilisateur ait eu la chance de les voir. Itinéraire original: liste ci-dessous.

+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+ 
| Domain | Method | URI      | Name | Action               | Middleware | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+ 
|  | GET|HEAD |/      |  | Closure               | web   | 
|  | GET|HEAD | groups     |  | App\Http\Controllers\[email protected]      | web,web,auth | 
|  | GET|HEAD | groups/set-default/{id} |  | App\Http\Controllers\[email protected]   | web,web,auth | 
|  | GET|HEAD | home     |  | App\Http\Controllers\[email protected]      | web,web,auth | 
|  | GET|HEAD | login     |  | App\Http\Controllers\Auth\[email protected]   | web,web,guest | 
|  | POST  | login     |  | App\Http\Controllers\Auth\[email protected]     | web,web,guest | 
|  | GET|HEAD | logout     |  | App\Http\Controllers\Auth\[email protected]     | web,web  | 
|  | POST  | password/email   |  | App\Http\Controllers\Auth\[email protected] | web,web,guest | 
|  | POST  | password/reset   |  | App\Http\Controllers\Auth\[email protected]    | web,web,guest | 
|  | GET|HEAD | password/reset/{token?} |  | App\Http\Controllers\Auth\[email protected]  | web,web,guest | 
|  | GET|HEAD | register    |  | App\Http\Controllers\Auth\[email protected] | web,web,guest | 
|  | POST  | register    |  | App\Http\Controllers\Auth\[email protected]    | web,web,guest | 
|  | GET|HEAD | visitees    |  | App\Http\Controllers\[email protected]     | web,web,auth | 
|  | GET|HEAD | visitees/check-in/{id} |  | App\Http\Controllers\[email protected]     | web,web,auth | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+ 

Mes itinéraires apparaissent maintenant comme suit après le retrait des routes du middleware 'web':

+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ 
| Domain | Method | URI      | Name | Action               | Middleware | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ 
|  | GET|HEAD |/      |  | Closure               | web  | 
|  | GET|HEAD | groups     |  | App\Http\Controllers\[email protected]      | web,auth | 
|  | GET|HEAD | groups/set-default/{id} |  | App\Http\Controllers\[email protected]   | web,auth | 
|  | GET|HEAD | home     |  | App\Http\Controllers\[email protected]      | web,auth | 
|  | GET|HEAD | login     |  | App\Http\Controllers\Auth\[email protected]   | web,guest | 
|  | POST  | login     |  | App\Http\Controllers\Auth\[email protected]     | web,guest | 
|  | GET|HEAD | logout     |  | App\Http\Controllers\Auth\[email protected]     | web  | 
|  | POST  | password/email   |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/reset   |  | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | password/reset/{token?} |  | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | GET|HEAD | register    |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | register    |  | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | visitees    |  | App\Http\Controllers\[email protected]     | web,auth | 
|  | GET|HEAD | visitees/check-in/{id} |  | App\Http\Controllers\[email protected]     | web,auth | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ 

Après le déplacement des routes hors du groupe middleware 'web', l'affichage des messages flash correctement. Mais, maintenant j'ai un nouveau problème!

Les messages flash ne sont pas supprimés de la session après la demande initiale. Ils persistent chaque demande subséquente jusqu'à ce qu'ils soient vidés manuellement ou oubliés.

Je ne suis pas sûr à ce stade si je devrais ouvrir une deuxième question qui aborde spécifiquement la persistance des données flash. S'il vous plaît aviser si oui.

+0

esprit pour montrer la sortie de la commande artisanale question 'route artisan php: list'? –

+0

@terrylow J'ai ajouté l'itinéraire: liste par votre demande. J'ai fait quelques découvertes supplémentaires et continuerai à plonger dans ce problème. Toute aide est appréciée! –

+0

pls restaurer vos routes et effectuer une «mise à jour de compositeur», le bug de voies d'auth Web middleware double a déjà été résolu avec la sortie de laravel/framwork 5.2.27, puis exécutez 'php artisan make: auth' btw supprimer la ligne que vous avez manuellement reflasher session, et votre problème ne devrait plus être –

Répondre

0

s'il vous plaît exécuter un composer update pour mettre à jour Laravel/cadre pour v5.2.27, puis délivrer php artisan make:auth pour régénérer les routes auth