2009-03-08 14 views
5

Nella mia app Rails, ho una pagina di accesso. Dopo che quella persona ha effettuato l'accesso, qual è il modo migliore in cui la mia app può continuare a monitorare la persona che ha effettuato il login. Ad esempio, se l'utente si sposta su pagine diverse, i miei controller/azioni perderanno la traccia di quell'utente a meno che non continui a passare variabile tra ogni pagina che l'utente successivamente visita. C'è un modo migliore per farlo? Dovrei usare la variabile sessions?Rails: tracciamento di un ID utente

risposta

7

Sì, le sessioni sono esattamente ciò che state cercando.

session["user_id"] = user_id 

E per andare a prendere l'utente corrente in un'altra pagina (se il modello si chiama User):

@current_user = User.find(session["user_id]") 
+0

Tenete presente che se si sta utilizzando le sessioni basate sui cookie, che è di default Penso che in rails 2.1+ che questi dati possono essere modificati per cambiare chi ha effettuato il login. – Tilendor

+2

In realtà il cookie ha un'impronta digitale SHA512 basata su di te La chiave segreta dell'applicazione non garantisce la manomissione dei dati. Ciò significa tuttavia che il contenuto dei cookie è disponibile sul lato client, quindi è necessario evitare di memorizzare dati sensibili (password ecc.) A meno che non si passi a un archivio lato server. – Palm

4

prendere in seria considerazione un plugin per gestire questo.

Ci sono diversi, come ad esempio restful authentication.

Fornisce la funzionalità current_user e logged_in?.