mrg*_*mrg 4 ruby session ruby-on-rails session-cookies ruby-on-rails-4
我了解rails中的会话.大多数参考文献都说,以下是创建会话的方法.
例:
session[:id]=user.id
Run Code Online (Sandbox Code Playgroud)
Session是一个全局哈希.我的疑问是,如果session是全局哈希,那么如果有多个用户尝试登录,那么会话变量是否会被覆盖?因为,只有一个全局哈希.因此,如果数百万用户登录,那么相同的"会话[:id]"如何保持所有用户会话.是否可以在单个变量中存储多个值.以及如何删除特定用户的会话.那么,如何在rails中处理会话?
session不是全局哈希.它是一种在每个请求的上下文中返回新哈希的方法.如何创建哈希取决于底层会话存储.
我们来看看2个典型的会话商店.
加密的cookie商店
这是Rails应用程序的默认会话存储.Rails序列化然后将整个会话哈希加密成cookie,并将这些cookie存储在客户端(例如浏览器)上.每次请求到达Rails应用程序时,Rails解密然后将该会话cookie反序列化为哈希.该哈希是该方法session返回的内容.
Redis会话商店
此会话存储不随Rails一起提供.这是一个独立的宝石.
使用此会话存储,Rails序列化会话,为其提供ID(称为会话ID),并将ID哈希对存储到Redis中.然后Rails将会话ID设置为cookie并将该cookie发送给客户端.每次请求到达Rails应用程序时,Rails都会从cookie中检索会话ID,从Redis获取与该会话ID关联的序列化会话,并将其反序列化为哈希.该哈希是该方法session返回的内容.
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |