[javascript] Come gestire la sessione utente del server nell'app singola pagina lato client


Answers

Sto costruendo un'applicazione simile. OAuth non è obbligatorio. Puoi avere sessioni normali ecc. Colpendo l'endpoint di accesso alla maglia e impostando una sessione e un cookie "keepme" con la sessione se l'utente vuole essere loggato in modo persistente. Puoi quindi avere un AuthFilter della jersey per esempio, se c'è un cookie con una sessione valida o una sessione attiva e mantenere l'utente connesso.

La tua applicazione di frontend non dovrebbe avere voce in capitolo, basta comunicare con il server e se non ottiene accesso non autorizzato (da AuthFilter), continua altrimenti visualizza la pagina di accesso.

Question

Sono andato in giro con diverse tecnologie lato client, come AngularJS, EmberJS, anche cercando di usare il JQuery diretto e capire come usare ReactJS con esso. A parte questo, il mio obiettivo è creare un'app per una sola pagina usando json tra il client e una java back end jax-rs Java 2 Java.

Ho due ostacoli al momento. Alcune informazioni però ... Sto installando la mia app come file WAR in Jetty. Il mio back-end è basato su java. Sto usando solo jquery dal lato client sin d'ora.

Il mio ostacolo principale è come gestire il login, il logout e la gestione delle sessioni. Con un'API di riposo e usando ajax, ho il login attivo, incluso l'impostazione di un cookie. La mia preoccupazione però è con un'app a singola pagina, c'è solo la pagina indice e se l'utente chiude il browser, quindi riapre alla pagina indice mentre il cookie / sessione è ancora buono, l'utente deve essere loggato, non vedere la pagina esterna (non registrata). Non sono sicuro di come gestirlo, che si tratti di una pagina jsp, index.html con una libreria di template, ecc. Con JSP posso inserire del codice scriplet (a mio giudizio migliore). Nei vecchi tempi includevo un'intestazione che controllasse request.getSession (). GetAttribute ("utente") e se fosse lì ... l'utente era loggato e usando il codice scriplet if () avrei visualizzato un intestazione loggata, invece dell'intestazione non registrata. Ma sono convinto che ci debba essere un modo migliore per farlo con i framework JS di oggi lato client.

L'altro ostacolo è la navigazione e gli aspetti dinamici. Ad esempio, quando stavo scherzando con angular js, è stato abbastanza facile usare Welcome {{name}} e all'interno dello scope sostituire il nome con un valore di risposta json per l'utente loggato. Nella mia situazione attuale, non sono esattamente sicuro di come andare per la visualizzazione di bit dinamici come questo con jquery puro diverso dall'uso di una sorta di codice $ ("# elem-id"). InnerHtml = "..." all'interno della risposta metodo di successo di una chiamata Ajax. Inoltre, non sono abbastanza sicuro su come gestire la navigazione su pagine diverse. Il mio sito registrato avrà alcuni menu a discesa o collegamenti che sostituiranno l'area del contenuto con diverse quantità di contenuti.

Quindi, in primo luogo, quali sono alcuni modi in una SPA per gestire le sessioni utente, nel caso di un ricaricamento della pagina, o il riavvio del browser in chiusura / arresto anomalo .. per assicurarsi che l'utente sia ancora connesso e indirizzarlo alla pagina giusta? In secondo luogo, che tipo di opzioni di template e di routing / navigazione esistono che non mi impongono di inserire un'enorme quantità di codice nella mia unica pagina index.jsp?

Grazie.




Related