?可以在controller与view中直接通过session与cookies访问,在model中无法访问。
#存信息 session[:current_user_id] = user.id #取信息 session[:current_user_id] #删除信息 session[:current_user_id] = nil #清空信息 reset_session?
cookies操作稍微有点多,因为关系到明文/加密,过期时长
1、默认为关闭浏览器,自动过期;明文存储。
#存信息 cookies[:id] = "rubyer.me" #取信息 cookies[:id] #输出"rubyer.me" #删除信息 cookies.delete(:key) #与session不同 #清空信息(不能直接删除,置过期即可) <% cookies[:id] = {:expires => 2.weeks.ago.utc} %>
?
2、指定2周后过期
cookies[:user_preference] = { :value => @current_user.preferences, :expires => 2.weeks.from_now.utc }
?
3、永久存储。实际为20年后过期,非永久
cookies.permanent[:user_preference] = @current_user.preferences
?
相当于cookies[:user_preference] = { :value => @current_user.preferences, :expires => 20.years.from_now.utc }?4、加密存储,key即为config/initializers/secret_token.rb中的Application.config.secret_token
cookies.signed[:id] = "45" #存储结果类似 cookies[:id] #返回“BAhJIgc0NQY6BkVU--a07249e5ce4374f62b7af628c70c679caa11c10b” #读取值 cookies.signed[:id] #返回"45"?
5、加密并永久存储
cookies.permanent.signed[:id] = "45" cookies.signed[:id]
?from:http://rubyer.me/blog/823