Mi aplicación Laravel está alojada en el mismo nombre de dominio (una aplicación en un solo subdominio, la otra en varios subdominios) que otra aplicación web que usa una cookie XSRF-TOKEN. Las dos cookies están en conflicto. ¿Hay alguna forma de cambiar el nombre de la cookie de Laravel a algo como XSRF-TOKEN_Second? Estoy usando la versión 6 de Laravel. Pido disculpas si la pregunta se hizo antes, no pude encontrar una respuesta. ¡Gracias!
Mi solución
El problema era que en .env APP_NAME tenía el mismo valor en ambos proyectos. Cambie el nombre de uno y cambiará el nombre de la sesión y no habrá más conflictos.
Puede configurar su propio token modificando la respuesta:
$response->headers->setCookie( new Cookie( 'NEW-XSRF-TOKEN-NAME', $request->session()->token(), $this->availableAt(60 * $config['lifetime']), $config['path'], $config['domain'], $config['secure'], false, false, $config['same_site'] ?? null ) ); Y debe actualizar su middleware para verificar el nuevo token. X-XSRF-TOKEN , según sus documentos, solo está ahí para la comodidad del desarrollador. Sin embargo, todavía le pido que no escriba su propia lógica csrf.
Estaba enfrentando el mismo problema con 2 aplicaciones laravel en el mismo dominio que se comunican entre sí, por ejemplo:
https://example.com/store/ https://example.com/gateway/ Los tokens CSRF competían entre sí. Resulta que la forma más fácil de solucionarlo fue establecer la ruta de la cookie de sesión en config/session.php de la siguiente manera:
/* |-------------------------------------------------------------------------- | Session Cookie Path |-------------------------------------------------------------------------- | | The session cookie path determines the path for which the cookie will | be regarded as available. Typically, this will be the root path of | your application but you are free to change this when necessary. | */ // fixes conflicts between store and gateway CSRF tokens 'path' => '/store/',y lo mismo en la puerta de enlace:
'path' => '/gateway/', Actualización : en realidad, es mejor no codificar la ruta de la cookie de la sesión, por lo que APP_URL se puede cambiar más tarde sin romperse. Aquí está la actualización del código:
'path' => parse_url(env('APP_URL'), PHP_URL_PATH),