[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