web-dev-qa-db-fra.com

Laravel 5.5 page de connexion et d'enregistrement indique: La page a expiré en raison de l'inactivité. [TokenMismatchException]

Je viens de créer un nouveau projet de laravel version 5.5 avec l'installateur laravel. Et exécutez la commande "php artisan make: auth ".Les vues et le contrôleur sont générés pour l'authentification de l'utilisateur. Et exécutez également" php artisan migrate "pour créer les tables nécessaires dans la base de données. Lorsque vous visitez la page de connexion et la page d'enregistrement, remplissez le formulaire et soumettez .Il affiche "La page a expiré en raison de l'inactivité. Veuillez actualiser et réessayer.". Mais l'actualisation de la page n'aide pas. Vu dans le code source, où provoque l'exception:

if ($e instanceof ModelNotFoundException) {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    } elseif ($e instanceof AuthorizationException) {
        $e = new AccessDeniedHttpException($e->getMessage());
    } elseif ($e instanceof TokenMismatchException) {
        $e = new HttpException(419, $e->getMessage());
    }

Il semble que "TokenMismatchException" soit à l'origine de ce problème. Quand est-ce arrivé et pourquoi? Je viens de créer ce nouveau projet et je n'ai pas fait d'autres changements. J'espère que vous avez obtenu les points. J'utilise php 7.1.9 (laravel 5.5 nécessite php> 7.0.0) et je sers le projet dans un environnement de développement avec: php artisan serve

9
brian.shen

J'ai eu le même problème sur localhost:8000 (php artisan serve). C'est peut-être une coïncidence, mais essayez "navigateur propre", autre que celui que vous avez utilisé avec le développement précédent. Pour moi, cela a fonctionné.

Il semble que le problème soit avec les cookies de développement avec les versions précédentes Laravel, sur la même URL).

9
studiojasper_pl

je pense que vous avez manqué le jeton csrf.

n'oubliez pas d'utiliser {!! csrf_field() !!}

27
Kokil

Dans mon cas, j'ai le même message d'erreur et je me suis dit que j'avais manqué d'ajouter csrf_token

{{ csrf_field() }}

Ou sans assistant de forme qui sera,

<input type="hidden" name="_token" value="{{ csrf_token() }}">

Si cela ne fonctionne pas, alors-

Actualiser le cache du navigateur et j'espère que cela fonctionnera, merci.

12

J'ai eu le même problème et c'est parce que j'utilisais virtualhost et que j'ai configuré la variable ci-dessous sur mydomain.com. dans le fichier config/session.php

'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

Quand je l'ai changé en null, il a commencé à fonctionner

'domain' => env('SESSION_DOMAIN', 'null'),

Je ne sais pas quelle est la raison derrière cela, mais ça fonctionne bien maintenant.

5
Afraz Ahmad

Il semble s'agir de paramètres d'autorisation sur le stockage et/ou le bootstrap/cache.

J'utilise un serveur Cloudways. J'ai réinitialisé les autorisations sur mon serveur sous Paramètres d'application et cela fonctionne maintenant. Sur mon serveur de développement local, l'équivalent était de définir chmod 777 sur le stockage .. J'avais utilisé 755 auparavant et l'erreur persistait.

1
Dylan Glockler

Ajouter un jeton csrf

       <input type="hidden" name="_token" value="{{ csrf_token() }}">
1
shalini

Ce problème est principalement dû au fait que vous n'avez pas le jeton csrf dans votre formulaire. Lors de la vérification du jeton csrf, il échoue, c'est pourquoi vous obtenez cette page. Laravel a généralement besoin d'un jeton csrf sous toutes ses formes. Vous pouvez ajouter un jeton csrf simplement en l'ajoutant à l'intérieur du formulaire.

 {{ csrf_field() }}

Une autre méthode consiste à exclure votre itinéraire dans le middleware verifycsrftoken.

Ajoutez simplement un champ protégé dans le middleware avec le nom de votre itinéraire.

protected $except=[
                    '1st route',
                    '2nd route',
                    .
                    .
                  ];

Cela devrait fonctionner.

0
Darshan

Eu ce problème aussi! Résolu par:

  1. Effacement du stockage de session du navigateur et des cookies.
  2. Fonctionnement php artisan cache:clear
  3. Assurer la storage/framework/sessions le dossier était vide, à l'exception du .gitignore.
  4. Redémarrage de l'environnement de développement.
0
Doug Black

si vous avez créé un nouveau projet localhost Vous devez afficher la ligne de configuration/session: 166 si 'secure' => true, vous devez modifier 'secure' => false, lorsque vous montez l'hôte ou le serveur, re-config => true désolé i connaître un peu l'anglais, l'espoir peut vous aider

0
Scott

Je garderais également csrf_token dans une balise META.

<meta name="csrf-token" content="{{ csrf_token() }}">
0
Raza Mehdi

J'ai eu ce même problème. vagrant reload --provision a travaillé pour moi

0
mark edosa

Je testais uniquement les demandes de publication pour mon API et suis tombé sur le même problème. Je l'ai résolu en ajoutant mon itinéraire au tableau $except Du middleware VerifyCsrfToken, c'est-à-dire aller à app/Http/Middleware/VerifyCsrfToken Et ajouter

protected $except = [
        'your/route'
];

Mais si vos demandes proviennent d'une plate-forme ou de vues frontales, il est conseillé d'ajouter {{ csrf_field() }} dans le formulaire qui envoie la demande.

0
Allan Mwesigwa

Salut pour les chemins de groupe que vous souhaitez appliquer à tout le monde, utilisez cette méthode, qui est ma version larvaire 5.5. Utilisez l'étoile => allez dans app/Http/Middleware/VerifyCsrfToken et ajoutez

protected $except = [
    '/user/*'
];

C'est aussi le chemin de mon utilisateur

Route::group(['prefix' => 'user', 'namespace' => 'User', 'as' => 'user.'] , function (){
0
Ali Najafi