Domanda

Qual è il modo migliore per mantenere lo stato dell'utente con Tomcat / Scala? Il mio primo pensiero è quello di mantenere le informazioni sull'account nella sessione in qualsiasi momento e reindirizzare l'utente a una pagina di accesso se non ci sono informazioni sulla sessione per l'account. È un modello praticabile o esiste un modo più intelligente di conservare le informazioni dell'utente? Sto cercando di replicare un sito di carrello della spesa di base e sto solo riflettendo sul problema in questo momento.

È stato utile?

Soluzione

Esistono molti modi per scuoiare questo gatto. È possibile archiviare le informazioni nella sessione, a condizione che gli oggetti siano sufficientemente leggeri (e che i volumi di traffico siano sufficientemente bassi). Questa è probabilmente la soluzione più semplice ma potresti incontrare difficoltà quando devi ridimensionare o raggruppare.

Per esperienza il ridimensionamento Tomcat, il clustering, l'archivio sessioni db, ecc. non hanno funzionato molto bene per me.

Un altro modo sarebbe quello di gestire il tuo token con un cookie. Quindi archiviare le informazioni effettive per un determinato token utente sul server. L'implementazione più ingenua avrebbe semplicemente una mappa in memoria, ma questo avrà lo svantaggio di perdere tutti i dati quando riavvii l'app.

È possibile mantenere le informazioni nel database ed eseguire una ricerca con il token utente su ogni richiesta (magari con una strategia di memorizzazione nella cache). Ciò consente anche di scalare su più server di app senza troppe preoccupazioni in merito al clustering: ogni istanza cerca semplicemente il token utente ed esegue una richiesta di ricerca sul database condiviso.

Se avvolgi l'implementazione effettiva dietro una bella interfaccia, potresti iniziare con la soluzione di sessione facile / economica e passare gradualmente a un'implementazione più complessa, se necessario in un secondo momento. Un avvertimento è che dovrai fare molta attenzione a non far trapelare informazioni specifiche servlet nell'interfaccia alla tua prima implementazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top