que - laravel foreach index
Sesiones persistentes en subdominios en Laravel 5 (3)
Usando 5.0
en config / session.php He configurado ''domain'' => ''.example.com''
pero no funciona. No puedo continuar una sesión ni siquiera en un dominio como este.
Mi sitio tiene muchos subdominios:
vancouver.example.com
newyork.example.com
etc ... están alojados en el mismo servidor y son la misma aplicación Laravel (comparten el mismo directorio de almacenamiento)
Ingreso con las credenciales correctas, sobre las cuales la aplicación redirige a otra página en el sitio, y no tengo sesión en ese momento. var_dump(Auth::user())
muestra null
aunque inicié sesión con las credenciales correctas.
storage/framework/sessions
muestra 14 archivos diferentes allí, todos son para mí y los limpié antes de comenzar a probar esto.
Voy a adjuntar mi método AuthController @ postLogin a continuación, que funciona bien si session.php ''domain'' => null
public function postLogin(Request $request)
{
$this->validate($request, [
''email'' => ''required|email'', ''password'' => ''required'',
]);
$credentials = $request->only(''email'', ''password'');
if ($this->auth->attempt($credentials, $request->has(''remember''))) {
Session::flash(''message'', ''You are now logged in.'');
Session::flash(''status'', ''success'');
if (str_contains($_SERVER[''HTTP_REFERER''], ''?goto='')) {
$params = explode(''?'', $_SERVER[''HTTP_REFERER''])[1];
$target = explode(''='', $params)[1];
} else {
$target = ''/'';
}
return redirect($target);
}
return redirect($this->loginPath())
->withInput($request->only(''email'', ''remember''))
->withErrors([
''email'' => $this->getFailedLoginMessage(),
]);
}
¿Has intentado guardar las sesiones en la base de datos, memcached o redis en lugar de archivos? Tuve una situación similar a la tuya y el almacenamiento de sesiones en la base de datos resolvió el problema para mí.
Por alguna razón, el controlador de sesión de Laravel no maneja correctamente las sesiones de dominio cruzado cuando se usa el controlador de archivo.
Lo averigué. Actualice domain => ''.example.com''
en domain => ''.example.com''
y borre las cookies para el sitio en cuestión.
@gadss
necesitas agregar una tabla de sesión como esta
php artisan session:table
composer dump-autoload
php artisan migrate
y cambie .env a SESSION_DRIVER SESSION_DRIVER=database
también modifica config / session.php
''driver'' => env(''SESSION_DRIVER'', ''database'')
y
''domain'' => ''.yourdomain.com''
después de eso, borre la caché y las cookies de su navegador.