2012-03-07 9 views

risposta

4

Questo è ovviamente possibile finché si accede ad alcune risorse condivise tra entrambi i framework. Ci sono probabilmente diversi modi per farlo, ma uno dei più ovvi sarebbe l'utilizzo di un backing store condiviso, ad esempio. database o forse anche memcached che sarebbe più veloce. Io non sono un utente Django, ma per quanto ne so memcached è supportato in esso ...

c'è ovviamente uno scenario più complesso relative a questo e che è la compatibilità dei dati . Probabilmente dovrai usare un formato intercambiabile che entrambi i framework comprendono, ad esempio. XML, JSON, BSON o simili. Quindi, anche quando si utilizza memcached, è necessario eseguire questa conversione .

+0

sì che era quello che avevo in mente anche. In realtà ero più interessato ad un esempio più pratico in quanto il mio vero problema è quello di condividere i dati che IIS/ASP.NET crea sotto il cofano (authentification/session per inst). Sarà necessario creare un modulo per inst ... – Dave

+0

Un modo migliore per condividere l'autenticazione è usando Oauth 2. Google, Facebook, Twitter e molte aziende Internet fanno così. Dovresti implementare un provider oauth. – barbolo

0

C'è un'opzione per memorizzare lo stato della sessione nel database MS SQL Server che è disponibile immediatamente. Utilizza i passaggi dal prossimo kb http://support.microsoft.com/kb/317604 È più sulla configurazione, non sull'implementazione. È possibile scrivere il proprio provider di archiviazione personalizzato, ma c'è qualche ragione per questo?

Non ho familiarità con Python, ma ci sono almeno driver ODBC per esso http://wiki.python.org/moin/SQL%20Server

3

Come vorrei condividere sessione ...

Fai il sottodominio del cookie di sessione agnostico

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

avere i miei due sotto-domini che voglio condividere sessione tra

Creare un semplice servizio Web o gestore generico in ASP.net che restituisce la sessione dell'utente serializzata in JSON o XML.

Se si utilizza un gestore generico, ricordare di utilizzare le interfacce IReadOnlySessionState o IRequiresSessionState sulla classe.

Ora da extra.miodominio.tld è possibile chiamare il gestore o il servizio www.mydomain.tld/[Get/Set] SessionValue. Raccoglierà il tuo cookie ".mydomain.tld" e consentirà la condivisione di valori di modifica.

+0

Mi piacerebbe sapere dove vorresti inserire questa logica per asp.net mvc? Vuoi inserire alcuni moduli IIS? – Dave

2

mi sento di raccomandare l'approccio seguito utilizzando un database condiviso (potrebbe essere una cache condivisa o qualsiasi altro datastore):

  1. Quando un utente accede a una delle vostre applicazioni al vostro dominio, si crea un cookie con il chiave "_shared_session" e con il valore di una stringa casuale generata dall'applicazione;
  2. Salvare il valore di questo cookie nel database e collegarlo a un oggetto JSON contenente i dati che si desidera condividere tra le applicazioni;
  3. Quando l'utente accede all'altra applicazione, si verifica se il cookie con la chiave "_shared_session" esiste e ne legge il valore;
  4. Con il valore del cookie, è possibile recuperare l'oggetto JSON condiviso.

risposta rapida:ci dovrebbe essere un filtro che cerca un cookie condiviso prima di creare una nuova sessione

Problemi correlati