可以在controller与view中直接通过session与cookies访问,在model中无法访问。
1.Session的存、取
在controller中访问
存session: session[:user_id] = user.id
取session: session[:user_id]
删除session: session[:user_id] = nil
2.Cookies设置
1、默认为关闭浏览器,自动过期;相当于浏览器中看到的会话
存cookies cookies[:id] = "user_id"
取cookies cookies[:id] 输出user_id
删除指定的cookies cookies.delete(:id)
清空cookies <% cookies[:id] = {:expires => 2.weeks.ago.utc} %>
2、指定2周后过期
cookies[:id] = { :value => 1, :expires => 2.weeks.from_now.utc }
3、永久存储。实际为20年后过期
cookies.permanent[:user_id] = 101
相当于
cookies[:user_id] = { :value => 101, :expires => 20.years.from_now.utc}
4、加密存储
cookies.signed[:id] = "11"
存储结果类似cookies[:id] , 返回“BAhadsfjksdY6BkVU--a07249e5ce4374f6dskljf89e432b7af628c70c6kdsjfsidn”
读取值cookies.signed[:id]
返回"11"
5、加密并永久存储
cookies.permanent.signed[:id] = "11"
session[:current_user_id] = 1 cookies[:id] = 2 cookies[:user_info] = { :value => 'zmy', :expires => 2.weeks.from_now.utc} cookies.permanent[:user_name] = 3 cookies[:user_name_1] = { :value => 4, :expires => 20.years.from_now.utc} cookies[:user_name_2] = { :value => 4, :expires => 30.years.from_now.utc} cookies.signed[:id] = "zmy"cookies.signed[:id_1] = "zmy_1"
此处用到火狐浏览器的firebug插件,可以导出txt格式的cookies,由截图可以看出,只有cookies在浏览器中存储。
加密id_1为加密后的一个字符串,没有加密的id直接显示,当然加密是为了安全考虑
没有设置时间的cookies在过期时间一项上显示为会话,设置时间后显示为过期时间
默认的永久保存有效期为20年,但可以设置大于20年的有效期。