verifycsrftoken generar crs php laravel laravel-5 laravel-5.2

php - generar - Laravel 5.2: token csrf no funciona



token laravel input (15)

Tal vez puedas usar esto: (src = https://laravel.com/docs/5.2/routing )

<form action="/foo/bar" method="POST"> <input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> </form>

Hola ¿Por qué mi valor de token csrf es nulo? Y cuando no uso token, no tengo TokenMismatchException !!!! Cómo puedo arreglarlo ?

Profundicé y descubrí que una sesión no se está registrando en SessionServiceProvider. ¿Hay algo que deba habilitarse para que esto funcione de manera predeterminada? Como soy un principiante de Laravel, no estoy seguro de cómo seguir los consejos anteriores. ¿Cómo me aseguro de que mis rutas se agreguen en el grupo "web"?

<form method="post" action="<?php echo url(''/form''); ?>"> <input type="hidden" name="_Token" value="{{ csrf_token() }}"> <input type="text" name="Title" placeholder="Title"><br> <textarea rows="10" name="Content" placeholder="Content"></textarea><br> <input type="submit" value="Send"> </form>


Puedo confirmar este problema, tanto csrf_token () como csrf_field () producen campos de token vacíos en Laravel 5.2. De acuerdo con los documentos, ambos métodos deberían funcionar pero no parecen hacerlo. Mi instalación es completamente nueva, por lo que los documentos son incorrectos o hay un error presente.


utilizar

{!! csrf_token() !!}

en lugar de

{{ csrf_token() }}


Podrías usar esto:

<form method="POST" action="/addUser" > {!! csrf_field() !!} ... </form>


Tengo el mismo problema. No encontré cómo solucionar un problema central, pero creo que esta es una solución decente: Laravel 5.x: redirige los errores CSRF a la página anterior
Entonces, en lugar de lanzar TokenMismatchException redirect usuario a la página anterior con el mensaje de error.
Para hacerlo, override VerifyCsrfToken.($request, Closure $next) .
Abra la App/Http/Middleware/VerifyCsrfToken.php y App/Http/Middleware/VerifyCsrfToken.php a la clase base ( Illuminate/Foundation/Http/Middleware/VerifyCsrfToken ) y copie el método handle dentro de la App/Http/Middleware/VerifyCsrfToken.php y cambie la línea que lanza TokenMismatchException para redireccionar a la TokenMismatchException anterior página. también agregue el use Closure; importación use Closure; . Entonces, después de todos los cambios, App/Http/Middleware/VerifyCsrfToken.php se verá así:

<?php namespace App/Http/Middleware; use Closure; use Illuminate/Foundation/Http/Middleware/VerifyCsrfToken as BaseVerifier; /** * Class VerifyCsrfToken * @package App/Http/Middleware */ class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ // ]; public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->shouldPassThrough($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } //throw new TokenMismatchException; return Redirect::back()->withError(''Sorry, we could not verify your request. Please try again.''); } }

La solución 2 es usar cafeína para Laravel .
Cafeína para Laravel es un paquete diseñado para evitar que el token CSRF de los usuarios caduque en su sitio al completar un formulario.
Mike, el creador del paquete, quería tener una forma segura de hacer la vida más fácil para los usuarios que se toman su tiempo para completar formularios al mantener el token despierto a través de una llamada ajax detrás de escena.


En la Versión 5.2: mueve la ruta a:

Route::group([''middleware'' => [''web'']], function () { //Your route here });

Tiene dos formas de usar Token en forma ( https://laravel.com/docs/master/routing#csrf-protection ):

// Vanilla PHP <?php echo csrf_field(); ?> // Blade Template Syntax {{ csrf_field() }}

O

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">


Creo que este es un problema bastante profundo ya que puede haber muchas causas de esto. Para mí, estaba actualizando de Laravel 5.1 a 5.2. También estoy usando la base de datos para almacenar mis sesiones. Me estaba dando este error, pero cuando revisé los registros de errores de laravel (/ storage / logs) encontré que Laravel 5.2 espera que la tabla de sesión tenga los campos user_id, ip_address y user_agent. El mío no. Cuando agregué estos campos todo funcionó igual que antes de la actualización. ¡Entonces, mi consejo es verificar el registro de errores!


Mi sugerencia es usar FormHelper y Form::open() en su vista. Los asistentes de Fomr y HTML se eliminaron de laravels core en la versión 5.0, pero puede volver a instalarlos siguiendo estas instrucciones.

De todos modos, hay un error tipográfico en su punto de vista. El nombre de campo correcto es _token y no _Token . Tal vez ese es el problema


Asegúrese de que la ruta de sesión sea escribible . De lo contrario, laravel compara nulo (token de sesión) con el valor $ _POST [''_ token''] y arroja un error de desajuste a pesar de la razón real.


Tuve el mismo problema Lo resolvió eliminando todos los archivos en la carpeta de sesiones. La ruta de la carpeta de sesiones es: yourApplication / storage / framework / sessions /


Asegúrese de que su ruta tenga el softdleware web aplicado.

Prácticamente cualquier ruta en la que desee sesiones, protección csrf, cookies encriptadas, errores de sesión, etc. ... necesitará el grupo de middleware ''web'' aplicado.

Verifique su archivo routes.php para el grupo de ruta de la siguiente manera:

Route::group([''middleware'' => ''web''], function () { // });

Actualización: desde 5.2.27 El RouteServiceProvider ahora coloca todas sus rutas en routes.php en un grupo de ruta que tiene el middleware web aplicado para usted.


Para no verificar la seguridad en este formulario debe ir a la ruta del archivo: config / auth.php en Laravel. En ese archivo, debe encontrar (o crear) la línea ''no_csrf'' => array(), Esta línea consiste en agregar las rutas en las que no se puede verificar la seguridad. En este acuerdo, debe agregar la ruta a su formulario, como por ejemplo:

''No_csrf'' => array(''/form''),


Edite su VerifyCsrfToken.php desde la carpeta Middleware a este

<?php namespace App/Http/Middleware; use Closure; use Illuminate/Foundation/Http/Middleware/VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * Handle an incoming request. * * @param /Illuminate/Http/Request $request * @param /Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $response->headers->set(''Access-Control-Allow-Origin'' , ''*''); $response->headers->set(''Access-Control-Allow-Methods'', ''POST, GET, OPTIONS, PUT, DELETE''); $response->headers->set(''Access-Control-Allow-Headers'', ''Content-Type, Accept, Authorization, X-Requested-With, Application''); return $response; } }

Tengo el mismo problema que tú, estoy en Laravel 5.2, también tengo un campo de token en mi formulario, pero todavía me arroja el error de "TokenMismatch" muy molesto ¿verdad?


Esta respuesta es para todas las personas que ya han usado {{ csrf_field() }} después de la etiqueta <form> en su archivo view.blade.php y también han ejecutado la php artisan key:generate comando pero todavía están obteniendo el Token Mismatch error. Estos son los pasos que tomé para resolver el error TokenMismatchException para uno de mis proyectos que aún estaba en desarrollo.

Elimine los archivos de caché de las siguientes dos carpetas dentro de su proyecto laravel:

  1. almacenamiento / framework / sessions /
  2. almacenamiento / framework / views /

Después de eliminar los archivos de caché, borre la memoria caché de su navegador.


Solo en caso de que alguien todavía esté atacando este problema,

dentro de config / session.php mis sesiones esencialmente no estaban funcionando (a pesar de que parecían estar bien por un tiempo)

¡Asegúrate de que la variable '' dominio '' esté establecida en nulo !

Se corrigió todo para mí, ya que ninguna de las otras cosas era realmente mi problema.

Espero que ayude a alguien.