[ruby-it] check sulla sessione nel controller
Luca Guidi
guidi.luca a gmail.com
Lun 4 Maggio 2009 12:25:39 CEST
Innanzitutto scorda caches_page.
Ti spiego, questa macro genera un file html statico nella tua cartella
pubblica, *tutte* le successive request verranno soddisfatte servendo
staticamente quel file.
Per cui se il primo utente che visita quella route è loggato, è
probabile che quella pagina abbia qualche contenuto che non dovrebbe
essere visibile ad un utente che non lo è. Esempio: il link "logout".
In questo caso tutte le request successive verranno servite con quello
specifico output. Il che ovviamente non va bene, perché potrebbe
contenere dati sensibili dell'utente.
La soluzione è caches_action
(http://api.rubyonrails.org/classes/ActionController/Caching/Actions.html),
la quale genera ugualmente dell'html, ma ne fa lo storing nella cache di
Rails, anziché nella cartella pubblica. Questo comporta una differenza
sostanziale, perché la request passa *sempre* attraverso ActionPack,
quindi con i tuoi before_filter puoi decidere se e quando utilizzare il
caching.
Ti consiglio queste letture:
* http://railsenvy.com/2007/2/28/rails-caching-tutorial
* http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
*
http://www.37signals.com/svn/posts/1557-javascript-makes-relative-times-compatible-with-caching
* http://lucaguidi.com/2009/02/09/rails-caching-and-javascript
* http://lucaguidi.com/2009/02/13/rails-caching-and-javascript-pt-2
Luca
--
blog: www.lucaguidi.com
More information about the Ml
mailing list