2012-05-09 28 views
11

Estoy trabajando con Cakephp y tengo un problema al mantener la sesión entre subdominios. Mi problema es el siguiente:CakePHP mantener la sesión del dominio principal en un subdominio

  • Los usuarios inician sesión en 'localhost/login'
  • Si autenticados se les redirige a 'customer.localhost/home'.

Actualmente Cake está creando una cookie para cada dominio, es decir, localhost y customer.localhost. Esto significa que no puedo mantener la sesión funcionando para el usuario. ¿Hay alguna manera de hacer que todo el dominio de las cookies esté fijado al dominio principal con el objetivo de mantener la sesión funcionando en todos los subdominios?

He intentado ingresar esto en mi bootstrap pero no tiene efecto: ini_set ('session.cook_dominio', '.localhost');

Si crees que esto no se puede hacer, no dudes en comunicármelo para que pueda pasar de este problema frustrante.

Muchas gracias,

kSeudo

+2

¿Qué versión de CakePHP está usando ? 1.3 o 2.x? –

Respuesta

16

Sesiones:

para hacer la cookie de sesión válido para todos sus subdominios y el dominio de nivel superior, en realidad se tienen que establecer por sí mismo en su APP/config/bootstrap.php archivo:

ini_set('session.cookie_domain', '.domain.com'); 

Luego, en su APP/config/core.php f ile, establecer la seguridad de baja:

Configure::write('Security.level', 'low'); 

"de lo contrario el referer_check se establecerá en la HTTP_HOST actual en la línea objeto CakeSession 441."



Cookies:

En this page Explica que puede utilizar la variable de 'dominio':

El nombre de dominio permitido acceder a la cookie. p. Use '.sudominio.com' para permitir el acceso desde todos sus subdominios.

por su código de ejemplo:

<?php 
public $components = array('Cookie'); 
public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Cookie->name = 'baker_id'; 
    $this->Cookie->time = 3600; // or '1 hour' 
    $this->Cookie->path = '/bakers/preferences/'; 
    $this->Cookie->domain = 'example.com'; 
    $this->Cookie->secure = true; // i.e. only sent if using secure HTTPS 
    $this->Cookie->key = 'qSI232qs*&sXOw!'; 
    $this->Cookie->httpOnly = true; 
} 
+0

Gracias con su ayuda, finalmente conseguí que funcionara.Una cosa para recordar no intente hacer esto con 'localhost' asegúrese de usar un dominio en su host como 'ejemplo.com'. – kSeudo

+0

primer enlace está muerto – tsukimi

+0

@tsukimi Gracias - eliminado. – Dave

1

Hay una configuración en app/config/core.php para cambiar de dominio cookie de sesión:

Configure::write('Session', array(
    'defaults' => 'php', 
    'ini' => array(
     'cookie_domain' => '.example.com' 
    ) 
)); 
+0

Esto no funcionó para mí, pero sí la respuesta aceptada. – drmonkeyninja

+0

Esto funciona, pero con el nombre de la directiva correcta. Respuesta editada. – savedario

Cuestiones relacionadas