2010-06-22 20 views
6

¿Es posible compartir una sesión entre mi aplicación PHP en un subdominio y mis aplicaciones Ruby en mis otros subdominios?Compartir una sesión entre Ruby y PHP

Realmente no sé a dónde llevarlo desde aquí. Sé que puedo configurar manualmente el dominio en la raíz para que la cookie sea válida para todos los subdominios, pero ¿cómo obtendría/configuraría cosas de/para la sesión para que se compartan en los subdominios?

Principalmente quiero usar esto para compartir el inicio de sesión para mis subdominios completos.

Por el bien del conocimiento, si se trata de un enfoque equivocado del problema, aunque sea factible, me gustaría entender cómo hacerlo y por qué no hacerlo.

¡Gracias a todos!

+0

Ya es tarde para la fiesta, pero recientemente me he encontrado con este problema y he publicado una tienda Rails PHP-combatible en mi blog (debería ser lo suficientemente fácil adaptar los principios a una aplicación que no sea de Rails): http : //watsonbox.github.com/blog/2012/05/01/sharing-session-between-rails-and-php/ –

Respuesta

6

Si desea compartir sesiones de esa manera (a través de PHP/Java/Ruby/etc), debe guardar las sesiones (y acceder a ellas) desde una base de datos.

Ver: http://php.net/manual/en/function.session-set-save-handler.php

Y lo que se necesita un enfoque idéntico en Ruby.

Para compartir las galletas a través de dominios, también hay que cambiar la opción de configuración de sesión de PHP para session.cookie_domain del valor predeterminado de "" (que inserta su nombre de dominio) a: ".yourhost.com" (observe el punto prefijado).

2

Esto podría resolverse con aplicaciones que comparten la misma base de datos y con un poco de ayuda de las cookies.

  • sesión se inició en php
    • Crear una cookie con cadena aleatoria en ella
    • Guardar la cadena en la base de datos con credenciales de usuario y la marca de tiempo
  • Sesión remitida a los carriles
    • Compruebe si existe la cookie
    • Buscar la cadena en la galleta formar la base de datos
    • Si no se encuentra coincidencia, la sesión es aceptada y las mismas credenciales de usuario podría ser utilizado

Sería conveniente para almacenar algún tipo de información única de la estación de trabajo o el navegador, de modo que robar la sesión, copiar la cookie no funcionará.

+0

¿Qué tipo de información única debo almacenar? ¿Y qué tipo de cadena aleatoria debo generar? Si juntara algo de información sobre el host, ¿sería "lo suficientemente seguro"? Como, ¿un hash MD5 que contiene el host remoto y la dirección remota? Con eso podría "combinar" la información del lado del servidor ... ¿Ayuda? : P –

+0

Has acertado. La información única podría ser MD5 hash (incluso mejor si es SHA) de la fila del host host ip + user agent desde http header + a salt. – salchams

Cuestiones relacionadas