2012-03-07 14 views

Respuesta

4

Esto es por supuesto posible siempre que acceda a algunos recursos compartidos entre ambos marcos. Probablemente existan varias formas de hacerlo, pero una de las más obvias sería usar alguna tienda de respaldo compartido, es decir. base de datos o incluso memcached que sería más rápido. No soy un usuario de Django, pero por lo que sé que es compatible con memcached ...

Por supuesto, hay un escenario más complejo relacionado con esto y que es compatibilidad de datos. Es probable que tenga que usar algún formato intercambiable que ambos marcos comprendan, es decir. XML, JSON, BSON o similar. Entonces, incluso cuando se usa memcached, tendrá que hacer esta traducción.

+0

Sí que era lo que tenía en mente también. En realidad, me interesaba más un ejemplo más práctico, ya que mi verdadero problema es compartir datos que IIS/ASP.NET crea bajo el capó (autenticación/sesión para inst). ¿Será necesario crear un módulo para inst ... – Dave

+0

Una mejor forma de compartir la autenticación es mediante Oauth 2. Google, Facebook, Twitter y muchas empresas de Internet lo hacen de esta manera. Debería implementar un proveedor de Oauth. – barbolo

0

Hay una opción para almacenar el estado de la sesión en la base de datos del servidor MS SQL que está disponible de fábrica. Use los pasos del siguiente kb http://support.microsoft.com/kb/317604 Se trata más de la configuración, no de la implementación. Puede escribir su propio proveedor de almacenamiento personalizado, pero ¿hay alguna razón para eso?

No estoy familiarizado con Python, pero hay por lo menos los conductores de ODBC para que http://wiki.python.org/moin/SQL%20Server

3

Cómo me gustaría compartir la sesión ...

Hacer el subdominio cookie de sesión agnóstico

<httpCookies domain=".mydomain.tld" /> 

tengo mis dos subdominios que quiero compartir sesión entre

www.mydomain.tld [ASP.net MVC app] 
extra.mydomain.tld [Python app] 

Cree un servicio web simple o controlador genérico en ASP.net que devuelva la sesión del usuario serializada en JSON o XML.

Si utiliza el controlador genérico, recuerde utilizar las interfaces IReadOnlySessionState o IRequiresSessionState en la clase.

Ahora desde extra.mydomain.tld puede llamar a su controlador www.mydomain.tld/[Get/Set] SessionValue o servicio. Recogerá su cookie ".midominio.tld" y permitirá compartir los valores de modificación.

+0

Me gustaría saber dónde pondría esta lógica en asp.net mvc? ¿Pondría algunos módulos de IIS? – Dave

2

Yo recomendaría el siguiente enfoque utilizando una base de datos compartida (que podría ser una memoria caché compartida o cualquier otro almacén de datos):

  1. Cuando un usuario accede a una de las aplicaciones en su dominio, se crea una cookie con el clave "_shared_session" y con el valor de una cadena aleatoria generada por su aplicación;
  2. Guarda el valor de esta cookie en la base de datos y relacionala con un objeto JSON que contiene los datos que deseas compartir entre las aplicaciones;
  3. Cuando el usuario accede a la otra aplicación, verifica si la cookie con la clave "_shared_session" existe y lee su valor;
  4. Con el valor de la cookie, puede recuperar el objeto JSON compartido.

respuesta rápida:debe haber un filtro que busque una cookie compartida antes de crear una nueva sesión

Cuestiones relacionadas