2012-01-07 8 views
6

Autentico lato server con express.session. Il modo normale di comunicare le informazioni di sessione lato client è di eseguire il rerender della pagina con il nuovo lato HTML generato dal server, ma ciò richiede una ricarica.Accedere alle informazioni sulla sessione del server sul client senza ricarica o richiesta aggiuntiva

Ho un'app di una pagina e voglio evitare di ricaricare. C'è un modo per accedere alle informazioni sul lato utente connesso? Queste informazioni sono memorizzate in un cookie? Come posso accedervi senza ricaricare la pagina o effettuare una richiesta extra al server?

+2

fare un percorso in veloce che restituisce alcuni dati della sessione utente in JSON e prenderlo con una richiesta AJAX sul lato client. – stagas

+0

Quando si dice "app a una pagina" si intendono veramente due pagine, una pagina di accesso e una pagina di app? Oppure una pagina contiene sia il modulo di accesso che l'applicazione? – Stobor

+0

@Stobor: questa è la cosa. Voglio unire la pagina di login con il resto e visualizzare l'una o l'altra a seconda di 'express.session'. – Randomblue

risposta

3

L'unico modo per farlo sarebbe quello di non includono le informazioni contenute nella risposta del server iniziale (forse un oggetto JS generato dinamicamente integrato nel codice HTML) o facendo una seconda richiesta come suggerito alessioalex.

Non possibile ottenere informazioni dal server senza parlare con il server ...

+0

Sì, sono interessato ai modi in cui riesco a popolare la risposta iniziale del server. Voglio continuare a servire le pagine in modo statico (ad esempio non usare roba di fantasia come Jade). Stavo pensando di usare i cookie ... – Randomblue

+0

Se stai cercando di pubblicare contenuti dinamici in un oggetto javascript, sarai costretto a usare una specie di strumento come la giada per popolarlo. Immagino sia possibile impostare le informazioni nei cookie, e quindi accedervi sul client (document.cookie credo), tuttavia se i dati sono al sicuro, non lo consiglierei. Non puoi essere sicuro di come il sistema degli utenti gestirà/memorizzerà/gestirà i cookie. Se lo fai in questo modo, non devi mai fidarti delle informazioni sul lato server dei cookie. Le informazioni sui cookie potrebbero essere modificate dall'utente e non dovrebbero essere copiate nuovamente nella sessione –

+0

Se stai cercando di impostare i cookie, potresti probabilmente usare https://github.com/jed/cookies. Non l'ho usato (e potrebbe esserci un modo più semplice per esprimere se stesso), tuttavia non ho il tempo ora di controllare. –

3

Come suggerito da @stagas, è possibile creare un percorso personalizzato con Express, ad esempio /user e restituire i dati della sessione (dettagli utente) utilizzando JSON. In questo modo non avresti bisogno di aggiornare la pagina.

Esempio:

app.get('/user', function (req, res) { 
    res.json(req.session.user); 
}); 
+0

Non desidero la richiesta in più ... – Randomblue

+0

È possibile utilizzare un middleware cookie in cui è possibile inserire informazioni sull'utente, ma non ci fare affidamento su questo per verificare se l'utente è connesso o meno. I cookie non sono i più sicuri, quindi se davvero non vuoi fare una richiesta extra al server memorizzi solo informazioni non essenziali (per esempio sesso, età, ecc.). – alessioalex

Problemi correlati