verifycsrftoken tokenmismatchexception generar laravel

tokenmismatchexception - Token Mismatch Exception on Login(Laravel)



tokenmismatchexception in verifycsrftoken.php line 68 (5)

Tuve este problema, fue causado por falta de espacio libre en el disco.

Obtenga algo de espacio e intente iniciar sesión de nuevo.

Seguí este tutorial sobre cómo crear una página de registro e inicio de sesión usando Laravel.

Todo funciona sin problemas, el único problema es que no puedo iniciar sesión. Si proporciono el nombre de usuario / contraseña incorrectos, me da un mensaje de error correctamente. Pero si uso las credenciales correctas, obtengo el siguiente error:

Illuminate / Session / TokenMismatchException

Esta es mi función csrf (predeterminada) -

Route::filter(''csrf'', function() { if (Session::token() != Input::get(''_token'')) { throw new Illuminate/Session/TokenMismatchException; } });

Esta es la acción de la forma -

{{ Form::open(array(''url''=>''signin'', ''class''=>''form-signin'')) }}

Y esta es la parte relevante de mi UsersController

public function __construct() { $this->beforeFilter(''csrf'', array(''on''=>''post'')); $this->beforeFilter(''auth'', array(''only''=>array(''getDashboard''))); } public function postSignin() { if (Auth::attempt(array(''email''=>Input::get(''email''), ''password''=>Input::get(''password'')))) { return Redirect::to(''dashboard'')->with(''message'', ''You are now logged in!''); } else { return Redirect::to(''login'') ->with(''message'', ''Your username/password combination was incorrect'') ->withInput(); } } public function getDashboard() { $this->layout->content = View::make(''users.dashboard''); }


Laravel hace un uso bastante esotérico de las sesiones, y cuando la cookie del usuario y el usuario guardan en la base de datos desalineada por alguna razón (por ejemplo, cuando vuelves a sembrar tu tabla de usuarios), obtienes una Excepción de falta de coincidencia sin más explicaciones .

Si ese es el caso, simplemente borre sus cookies.


Tuve este problema al iniciar sesión también. De vez en cuando se produjo esta excepción, por lo que me detengo e intento reproducirla. Lo consigo al hacer esto:

Primero cargo la página de inicio de sesión.

Luego borré las cookies.

Luego, sin volver a cargar la página de inicio de sesión, ingresé el nombre de usuario y la contraseña e intenté iniciar sesión.

Debido a que se eliminó la sesión (cuando eliminé las cookies), era normal que este código no pasara y lanzará TokenMismatchException.

Route::filter(''csrf'', function() { if ( Session::getToken() != Input::get(''_token'')) { throw new Illuminate/Session/TokenMismatchException; } });

Entonces, lo que hice para resolver mi problema fue agregar un redireccionamiento a la página de inicio de sesión con un mensaje para informar al usuario que la sesión podría haber expirado.

Route::filter(''csrf'', function() { if ( Session::getToken() != Input::get(''_token'')) { return Redirect::to(''/admin/login'')->with(''warning'', ''Your session has expired. Please try logging in again.''); } });

Por lo tanto, después de volver a cargar la página, se crea una nueva sesión y se resuelve el problema.


/config/session.php establece esa información ''expire_on_close'' => true, guarda y carga de nuevo tu sitio ya no tendrás el problema con Token Mismatch Exception on Login


Verifique su ruta: haga una lista para ver si el inicio de sesión está protegido por el middleware web. En mi caso, cometí un error al agregar middileware web a la ruta de inicio de sesión donde debería ser el middleware invitado.