http://de.wikipedia.org/wiki/HTTP-Cookie.
cookies[]
, den
wir transparent benutzen können. Um den technischen Kleinkram kümmert sich
dann Rails automatisch im Hintergrund.MacBook:~ xyz$ rails new cookie_jar [...] MacBook:~ xyz$ cd cookie_jar MacBook:cookie_jar xyz$ rails generate controller Home set_cookies show_cookies delete_cookies [...] MacBook:cookie_jar xyz$
app/controllers/home_controller.rb
befüllen wir wie
folgt:class HomeController < ApplicationController def set_cookies cookies[:user_name] = "Horst Meier" cookies[:kundenummer] = "1234567890" end def show_cookies @user_name = cookies[:user_name] @kundennummer = cookies[:kundenummer] end def delete_cookies cookies.delete :user_name cookies.delete :kundenummer end end
app/views/home/show_cookies.html.erb
so:<h1>Home#show_cookies</h1> <p>Find me in app/views/home/show_cookies.html.erb</p> <table> <tr><td>User-Name:</td><td><%= @user_name %></td></tr> <tr><td>Kundennummer:</td><td><%= @kundennummer %></td></tr> </table>
http://0.0.0.0:3000/home/show_cookies
in Ihrem Browser. Sie werden keine Werte angezeigt bekommen. Öffnen Sie
jetzt die URL http://0.0.0.0:3000/home/set_cookies
und danach wieder http://0.0.0.0:3000/home/show_cookies
.
Jetzt bekommen Sie die Werte angezeigt, die wir in der Methode
set_cookies
gesetzt haben.http://0.0.0.0:3000/home/delete_cookies
können Sie die Cookies wieder löschen.permanent
-Methode. Unser
obiges Beispiel können wir in der
app/controllers/home_controller.rb
um diese Methode
erweitern:class HomeController < ApplicationController
def set_cookies
cookies.permanent[:user_name] = "Horst Meier"
cookies.permanent[:kundenummer] = "1234567890"
end
def show_cookies
@user_name = cookies[:user_name]
@kundennummer = cookies[:kundenummer]
end
def delete_cookies
cookies.delete :user_name
cookies.delete :kundenummer
end
def debug_cookies
end
end
config/initializers/secret_token.rb
:# Be sure to restart your server when you modify this file. # Your secret key for verifying the integrity of signed cookies. # If you change this key, all old signed cookies will become invalid! # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. CookieJar::Application.config.secret_token = '85ec33910d4d57f3d3c69cb8fef20f158f68a219a76db71280779454a523330874fc4e42c7e62ecb25b8e4f5fcce1dcad88c7dcc9671a9922f675d770270a25a'
signed
. Diese muss beim Schreiben und Lesen des
Cookies benutzt werden. Unser obiges Beispiel können wir in der
app/controllers/home_controller.rb
um diese Methode
erweitern:class HomeController < ApplicationController def set_cookies cookies.permanent.signed[:user_name] = "Horst Meier" cookies.permanent.signed[:kundenummer] = "1234567890" end def show_cookies @user_name = cookies.signed[:user_name] @kundennummer = cookies.signed[:kundenummer] end def delete_cookies cookies.delete :user_name cookies.delete :kundenummer end def debug_cookies end endDer Inhalt des Cookies wird jetzt bei jedem Setzen verschlüsselt abgespeichert. Der Name des Cookies ist weiterhin im Klartext für den User lesbar. Der Wert aber nicht mehr.