2010-05-25 2 views
4

Mon hôte me demande d'utiliser un domaine différent pour l'accès sécurisé SSL (SSL partagé), donc j'ai besoin de faire la transition entre deux domaines. Une partie de la page vit au http://example.com, tandis que la partie SSL est au https://example.hosting.com. En tant que tel, je ne peux pas définir un cookie couvrant tout le domaine.Démarrer manuellement une session avec un cookie de session id/transition spécifique entre domaines

Ce que je suis en train de faire est de passer l'identifiant de session au cours et re-mettre le cookie comme celui-ci:

  • http://example.com/normal/page, utilisateur clique lien dans une zone sécurisée et va à:
  • http://example.com/secure/page, ce qui provoque une redirection vers:
  • https://example.hosting.com/secure/page?sess=ikub..., qui ressuscite la session et définit un nouveau valide pour le domaine, puis redirige vers:
  • https://example.hosting.com/secure/page

Cela fonctionne jusqu'au point où la session devrait être ressuscitée. Je fais:

function beforeFilter() { 
    ... 
    $this->Session->id($_GET['sess']); 
    $this->Session->activate(); 
    ... 
} 

Pour autant que je peux le dire devrait démarrer la session avec l'ID donné. En réalité, il génère un nouvel identifiant de session et cette session est vide, les données ne sont pas restaurées.

Ceci est sur CakePHP 1.2.4. Ai-je besoin de faire autre chose ou existe-t-il une meilleure façon de faire ce que j'essaie de faire?

Répondre

2

Lorsque Configure::write('Security.level') est défini sur medium ou supérieur, session.referer_check est implicitement activé, ce qui fait échouer l'ensemble. Définir le niveau de sécurité sur low (ou en utilisant une configuration de session personnalisée) fait que tout fonctionne comme il se doit.

Il est allé environ 5 heures de débogage ... (-_- ;;)

0

Ma première pensée est d'utiliser les sessions de fichiers Cake et copiez le fichier sur, puis peut-être essayer et commencer une nouvelle session avec ce phpsessid, même si je ne suis même pas sûr que cela fonctionnerait réellement ou pas :)

+0

Semble trop de tracas et peut-être plus d'erreurs que le système actuel. Merci pour la contribution si. :) – deceze

-1

Avec Cake 2.6.1 - C'est ce qui a fonctionné pour moi.

$this->Session->id("tfvjv43hjmsnjkh0v3ss539uq7"); // add session id you want to set 
    $this->Session->id(); 
    $this->Session->read("key"); // hhoorray worked :) 

avec fonction d'identification SessionComponent() doit être appelé deux fois, une fois avec l'identifiant de session pour mettre session_id(); et deuxième fois pour commencer la session de gâteau. Premier appel ne démarre pas vraiment la session ... Je ne sais pas comment Cake Guys l'a manqué .....

Upvote si cela fonctionne pour vous.

+0

Au moins ... Avoir une courtoisie pour commenter la raison pour laquelle vous downvote une réponse ?? –

Questions connexes