TokenMismatchException en VerifyCsrfToken.php línea 53 en Laravel 5.1

Cuando bash iniciar sesión, muestra el error de token. He comprobado el token en la vista de la forma correcta y cuando comment \App\Http\Middleware\VerifyCsrfToken::class , en Kernel.php me hace iniciar sesión pero después de redirigir a mi panel no estoy conectado. Estoy usando MAMP en mac.

 

Login

{!! Form::open(['url'=>'user/login','class' => '']) !!}
  • {!!Form::Text('customer_code',Input::old('customer_code'),['class'=>''])!!}
  • {!!Form::Password('password','',['class'=>''])!!}
  • {!! Form::submit('Submit',array('class' => 'btn')) !!}
{!!Form::close()!!}

Mientras tanto, uso Sentry Package para iniciar sesión.

  /** * post_login */ public function post_login() { try { $rules = [ 'customer_code' => 'required', 'password' => 'required', ] ; $message = [ 'customer_code.required' => 'erorrr1', 'password.required' =>'error2' ]; $validator = Validator::make(Input::all(), $rules,$message); if ($validator->fails()) { return Redirect::back()->withErrors($validator)->withInput(); } // if ($validator->fails()) else { $authUser = Sentry::authenticateAndRemember(array( 'customer_code' => Input::get('customer_code'), 'password' => Input::get('password')), false); if($authUser) { //$login = Sentry::loginAndRemember($authUser); return Redirect::to('user/panel/'.$authUser->id)->with('comment', 'Welcome'); } else { return Redirect::back()->with('comment', 'Error for login'); } }//validator } catch(\Exception $e) { return Redirect::back()->withInput(Input::except('password','file'))->withErrors(['ERROR!!!!!']); } } 

Editado:

Como está utilizando el generador de formularios, elimínelo de su formulario. Laravel form builder agrega automáticamente un campo de token oculto a su formulario cuando lo hace Form::open()

Por lo tanto, elimine esta línea:

   

Con una nueva instalación de Laravel 5.1, sin solo una actualización del compositor de la versión 5.0 a la 5.1, veo algunas diferencias y una en la carpeta de Middleware.

EncryptCookies.php es un nuevo Middleware, comprueba si lo tienes.

Así que no volví a probar, transfiero en este momento mis archivos de mi versión 5.0 a una nueva instalación de la versión 5.1, pero estoy bastante seguro de que puede ser la solución para este problema, EncryptCookies.php estaba en la stack del error de desajuste de token

¡Bien, creo que todos perdieron la creación del Token CSRF durante el cierre de sesión!

Como he resuelto el problema.

Simplemente agregue el código siguiente al encabezado.

   

Y si usa {!!Form::open()!!} creará automáticamente el token. De lo contrario, puedes usar

  

o

 {!! csrf_field() !!} 

solo forma inmediata abierta. Lo más importante es usar return Redirect::to(''); en la función del controlador o una recarga de página o ajax reload que el token se puede crear!

Me gusta:

 public function logout() { Session::flush(); Auth::logout(); return Redirect::to('/'); } 

Para garantizar el token creado correctamente o no, verifique “ver el origen de la página” en el navegador y se mostrará como:

   

¡Creo que podría resolver el problema ya que funcionó para mí!

Añadiendo {!! csrf_field() !!} {!! csrf_field() !!} resolvió mi problema como se muestra a continuación:

 
{!! csrf_field() !!}

Si usa la ayuda de Laravel Form como a continuación:

 {!! Form::open(array('class' => 'form-horizontal', 'role' => 'form')) !!} 

El código CSRF se agregará automáticamente en su script html. También asegúrese de ver el código fuente en el navegador para asegurarse de que se haya agregado un campo como el siguiente.

  

No ha publicado su código de muestra en su pregunta.

Por lo tanto, verifique su código con las siguientes opciones,

intente con el valor del campo de entrada oculto:

 {!! csrf_token() !!} or {{ csrf_token() }} 

También puede usar la plantilla de hoja de formulario:

 {!! Form::open(array('method' => 'GET/POST','url' => 'YOUR_URL',)) !!} 

Esto agregará automáticamente el Código CSRF en su script html

Una cosa más para incluir en la sección es:

  

También estaba teniendo este problema al intentar subir un archivo. Resultó excedido el max_post_size, en cuyo caso aparentemente todas las variables POST se borran y, por lo tanto, no se está recibiendo ningún token.

Agregar en el lado de la forma.

Esta solución funcionó para mí:

Agregue {{ csrf_field() }} en cualquier lugar del formulario.

Elimine App \ Http \ Middleware \ VerifyCsrfToken :: class de $ middleware en Kernel.php.

Use el siguiente código. Está funcionando perfectamente.

  

Yo tuve el mismo problema. Estoy usando Laravel 5.1.28, php 5.6.13
Después de ver TokenMismatchException en VerifyCsrfToken, busqué en la web las respuestas, pero ninguna resolvió mi problema.

La página envió el token. Los valores del token también se ven en el archivo de sesión en el directorio storage / framework / sessions (desactivé el cifrado para verlo).

Agotado, vuelvo a instalar laravel y uso un formulario simple para probar, funcionó sin error de error de token.

Moviendo mi código al laravel recién instalado pieza por pieza, finalmente encontré que el problema fue causado por doctrine / dbal (todavía no sé por qué).

Se lo quitó de composer.json y el problema desapareció.
En el error Composer.json, token mismatch se vio con la siguiente línea:

 "require": { .... "doctrine/dbal": "^2.5" ... }, 

Su caso puede ser diferente, pero es posible que desee ver si cambia algo en Composer.json que pueda estar causando el problema.

Tengo el mismo problema al usar este código

   

cambiándolo a {!! csrf_field() !!} {!! csrf_field() !!} resolver mi problema

estoy en L5.1

Esto funciona para mi.

   {{ Form::button('Replace Message',['onClick'=>'getMessage()']) }}