29-08-2011, 11:03 PM
(Modification du message : 29-08-2011, 11:06 PM par Viciousity.)
Ben une session est en fait un cookies a durée limitée.
Pourquoi ? Simplement, encore une fois, pour palier à un maximum d'attaque d'attaque client-serveur.
En effet, si tu te penches plus sur le fonctionnement des cookies dans rails, tu te rend compte qu'ils sont "cryptés", en fait une variable aléatoire mais dépendante d'une clé secrète (située config/initializers/session_store.rb) est générée à chaque fois que ton cookie est modifié pour ensuite être stockée dans ton cookie de manière transparente. Si jamais, quand rails lit le cookie, cette variable est propre à l'application, alors le cookie est lu, sinon il est détruit.
La seule différence entre un "cookies[:var]" et une "session[:var]" est le panel de méthode que tu peux utiliser dessus. Ainsi, dans le premier cas, tu peux définir sa durée, son domaine d'application, etc ... Tandis que dans le cas de la session tu es bridé à lui assigner une valeur.
Si tu veux utiliser un cookie tu change simplement ton code pour ceci :
Pourquoi ? Simplement, encore une fois, pour palier à un maximum d'attaque d'attaque client-serveur.
En effet, si tu te penches plus sur le fonctionnement des cookies dans rails, tu te rend compte qu'ils sont "cryptés", en fait une variable aléatoire mais dépendante d'une clé secrète (située config/initializers/session_store.rb) est générée à chaque fois que ton cookie est modifié pour ensuite être stockée dans ton cookie de manière transparente. Si jamais, quand rails lit le cookie, cette variable est propre à l'application, alors le cookie est lu, sinon il est détruit.
La seule différence entre un "cookies[:var]" et une "session[:var]" est le panel de méthode que tu peux utiliser dessus. Ainsi, dans le premier cas, tu peux définir sa durée, son domaine d'application, etc ... Tandis que dans le cas de la session tu es bridé à lui assigner une valeur.
Si tu veux utiliser un cookie tu change simplement ton code pour ceci :
cookies.permanent[:cookie_var] = "valeur"
cookies.delete :cookie_var