2010-04-15 10 views
7

Ho un'applicazione che utilizza la gestione della sessione di gestione della sessione di coldfusion (anziché della J2EE).Problema della sessione ColdFusion - più utenti dietro un IP proxy - cftoken e cfid sembrano essere condivisi

Abbiamo un cliente, che ha recentemente trasferito il traffico della propria azienda a noi tramite un server proxy nella propria rete.

Così, al nostro server Coldfusion, sembra che tutto il traffico proviene da questo indirizzo IP, per tutti i conti di questa società ..

Tra le variabili di sessione, parte 1 è conservato in un cflock e la parte 2 è mantenuta in variabili di sessione modificabili. Potrei essere malinteso, ma lo abbiamo fatto in questo modo mentre modifichiamo alcuni valori, se necessario, durante l'utilizzo dell'applicazione.

Ora ci stiamo imbattendo in un problema di questo client con le loro variabili di sessione confuse (?). Abbiamo un caso in cui impostiamo un timestamp ... e quando arriva il momento di cercarlo, è vuoto. A giudicare da ciò, ciò accade a causa di un altro utente sullo stesso token.

I miei pensieri iniziali sono di esaminare la modifica della gestione della sessione esistente per generare in qualche modo un cftoken/cfid univoco, o per iniziare a utilizzare jsession_ID, se questo risolve il problema.

Ho svolto alcune ricerche di base su questo problema e non ho trovato nulla di simile, quindi ho pensato di chiedere qui.

Grazie!

+0

Stai utilizzando i cookie per la gestione della sessione? Ogni singolo browser dietro il proxy * dovrebbe * ricevere cookie di sessione univoci. Forse il proxy deve in qualche modo memorizzare nella cache i cookie. –

+0

Sono abbastanza sicuro che i cookie vengano utilizzati. Analizzerò i cookie memorizzati nella cache dal proxy. La parte principale del problema è che le variabili di sessione sembrano confuse e quelle vuote utilizzate invece quando dovrebbero già essere state inviate. Stiamo facendo una sessione di debug su questo momento per catturare le variabili di sessione in ogni singolo clic per vedere dove/se va male. –

+1

Ho visto che i server proxy che funzionano male condividono i cookie. Più spesso, li ho visti memorizzare nella cache una pagina e restituirla a una richiesta per lo stesso URL anche se i dati dei cookie sono diversi. Risultati molto simili, però. –

risposta

2

Ho avuto problemi simili a intermittenza per anni.

I cookie di JSession sembrano aiutare (non ci sono dati concreti su questo), ma una soluzione che ho implementato repoeatedly usa le intestazioni no-cache e cache expiry su ogni pagina.

http://www.bpurcell.org/blog/index.cfm?entry=1075&mode=entry fornisce alcuni dettagli su come implementarlo.

In casi estremi, siamo stati costretti a passare il token e cfid nei collegamenti/moduli, ma questa è una PITA da implementare, quindi proverei prima la soluzione di scadenza/prevenzione cache.

+0

La mia esperienza è simile. – ale

+0

le intestazioni di no-cache e cache expiry potrebbero essere il modo migliore per andare sulle rispettive pagine. –

+0

Ho intenzione di scegliere questa come la risposta corretta per il momento. –

2

Per quanto ne so, non ci sono "contro" nell'uso delle variabili di sessione J2EE, a meno che non sia veramente necessario che la sessione sia attiva dopo che l'utente chiude il browser. Penso che dovresti provare a vedere come si comporta l'applicazione e vedere se questo ti risparmia problemi di refactoring.

per essere sicuri che si sta utilizzando tutte le altre impostazioni di provare questo:

<cfdump var="#APPLICATION.GetApplicationSettings()#" label="Application settings" /> 

Se avete sessionmanagement e biscotti client acceso, è tutto a posto, in modo da provare le variabili di sessione J2EE.

+0

Ora vedo quasi la stessa risposta :) http://stackoverflow.com/questions/1984627/disadvantages-of-j2ee-session-management-in-coldfusion/1985449#1985449 –

+0

Grazie Zarko. Ci proverò dopo l'opzione per forzare la no-cache. –

Problemi correlati