Hola, tengo dos aplicaciones creadas que son totalmente independientes pero resulta que si inicio sesión en una se me cierra la sesión de la otra ¿cómo puedo hacer para que se mantengan independientes las sesiones?
Hola, tengo dos aplicaciones creadas que son totalmente independientes pero resulta que si inicio sesión en una se me cierra la sesión de la otra ¿cómo puedo hacer para que se mantengan independientes las sesiones?
Hola @blonder4131,
Si el url es el mismo van a compartir la variable de sesion, tienes varios caminos aqui
Estoy probando con las cookies pero no me funciona, sigue igual
'cookies' => [
'class' => 'yii\web\Cookie',
'httpOnly' => true,
'secure' => true,
'path' => '/club-deportivo/web/',
'sameSite' => \yii\web\Cookie::SAME_SITE_LAX,
],
Incluso estaba viendo si el sameSite era necesario pero nada ¿alguna recomendación? Voy a probar las sesiones.
Con bases de datos me da el mismo problema
'session' => [
'class' => 'yii\web\DbSession',
// 'db' => 'mydb', // el identificador del componente de aplicación DB connection. Por defecto'db'.
// 'sessionTable' => 'my_session', // nombre de la tabla de sesión. Por defecto 'session'.
// 'timeout' => 10, segundos de inactividad para expirar la sesión
],
Todavía no lo consigo, por lo que veo solo funciona con cookies y se crea el mismo nombre para todas las apps, lo imprimo así:
<?= \Yii::$app->session->id; ?>
También intenté agregando el atributo savePath pero nada ¿hay alguna forma de decirle qué nombre tenga la cookie de sesión o algo así?
No sé si llego un poco tarde, pero si he entendido bien el problema necesitas sesiones independientes en dos apps diferentes, pero que comparten dominio.
Cuando uso la advanced template, que son por defecto tres apps diferentes frontend, backend y console, se da el mismo problema con las cookies si se reorganizan los archivos para que todo funcione en un mismo dominio. Por ejemplo tendríamos la app de frontend en www.loquesea.com y la app de backend en www.loquesea.com/admin. Ambas aplicaciones son diferentes y los usuarios deberían tener sesiones diferentes.
Lo que hago es definir dos cookies distintas, una para cada aplicación, y configurarlas en el main.php de frontend y en el de backend. Sería algo parecido a esto, con algunas opciones que se pueden configurar:
En frontend/config/main.php en la seccion de ‘components’:
'request' => [
'csrfParam' => '_csrf-frontend',
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
'session' => [
// nombre de la cookie de sesion para frontend
'name' => 'advanced-frontend',
],
Y en backend/config/main.php también en la seccion ‘components’, cambiamos el nombre de las cookies para sesión y usuario e indicamos el path de la app de backend.
'request' => [
'csrfParam' => '_csrf-backend',
'csrfCookie' => [
'httpOnly' => true,
'path' => '/admin',
],
],
'user' => [
'identityClass' => 'backend\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_identity-backend',
'path' => '/admin',
'httpOnly' => true
],
],
'session' => [
// nombre de la cookie para backend
'name' => 'advanced-backend',
'cookieParams' => [
'path' => '/admin',
],
],
No creo que funcione bien tal y como lo pongo, pero para hacerse una idea.
Acabo de darme cuenta de que el post es de diciembre, pero de 2021. De todas formas dejo la respuesta por si le sirve a alguien.
muchas, gracias, creo que ahora funciona, reemplacé la ruta admin por el nombre de mi carpeta en el public_html y los nombres los puse según mis proyectos para mejor identificación. Lo único que es ya no estoy trabajando donde quería implementarlo pero se agradece de todas formas
Nada hombre. A ver si le sirve a alguien.
Es cosa mía, que no sé por qué leí Diciembre de 2022 en lugar de 2021 xD