2010-06-02 6 views
0

J'ai une application Rails sur un sous-domaine - xyz.domain.com, et une application PHP sur un autre sous-domaine - abc.domain.comComment créer une session en PHP quand il y a une session sur le même domaine dans Rails?

Quand un utilisateur est connecté dans l'application Rails, je voudrais leur donner une session pour que je puisse enregistrer certains événements concernant cet utilisateur dans l'application PHP mais dans la même base de données de l'application Rails. Je voudrais essentiellement exposer une API qui nécessite une authentification.

Quelle est la meilleure façon de procéder? Je ne stocke pas la session dans une base de données

MISE À JOUR Je dois mentionner que l'objectif est de permettre un accès authentifié à partir du site PHP à la base de données qui a été utilisé uniquement par l'application Rails jusqu'ici. Si un utilisateur est connecté à l'application Rails, je veux être en mesure de suivre tous les événements qui se produisent sur le site PHP et de les associer à l'utilisateur.

Répondre

0

Je pense que la session n'est pas possible. vous pouvez utiliser la base de données pour stocker l'authentification s'ils peuvent partager la même base de données entre sous-domaine.

2

Je vais répondre, ne sachant pas beaucoup de choses sur Rails. Vous pouvez customize the cookie name dans php.ini. Entre le nom de la session et le bon cookie, vous pouvez créer un cookie qui sera partagé par les deux applications. Une "session" en termes PHP implique simplement un cookie dont la valeur pointe vers un ensemble de données enregistrées dans le magasin de sessions. Par exemple, si PHP (utilisant la configuration par défaut) voit un cookie PHPSESSID=2b00042f7481c7b056c4b410d28f33cf, il cherchera un fichier de session comme /tmp/sess_2b00042f7481c7b056c4b410d28f33cf. Le fichier contient juste la sortie de serialize($_SESSION). Ainsi, le partage de la session partagera cette valeur de cookie, mais rien d'autre intrinsèquement. Vous devrez décider comment partager d'autres valeurs, si PHP doit insérer des enregistrements de journal. Certaines options:

  1. Si la session PHP est vide, interrogez une URL dans l'application Rails qui fournit le nom d'utilisateur connecté et d'autres détails de session. Assurez-vous que l'URL est accessible uniquement depuis localhost.
  2. Affectez des ID de session aux noms d'utilisateur/identifiants dans la base de données afin que PHP puisse effectuer une recherche.
+0

ok. Je viens d'ajouter des informations sur mon objectif final. Je pense qu'un cookie partagé fonctionnerait, mais je ne suis pas sûr de ce que le flux de cette transaction ressemblerait. – Tony

+0

Merci, j'ai mis à jour ma réponse un peu. J'espère que cela t'aides. –

Questions connexes