我可以在没有用户模型或任何身份验证的情况下在Ruby on Rails中使用会话/ cookie吗?

时间:2016-04-20 16:42:58

标签: ruby-on-rails ruby session cookies

我正在Rails中创建一个测验游戏,并希望创建一个会话来存储当前用户的数据,以便跟踪他们正确回答的问题数量。我搜索过的所有教程都首先登录,然后生成一个会话,没有它我可以这样做吗?

编辑: 实际上我想知道如果没有用户模型这是否可行?

1 个答案:

答案 0 :(得分:4)

是。 rails会话存储机制只是将会话ID与会话存储(默认情况下为cookie)链接。

它基本上是这样的 - 当用户第一次访问你的应用程序时,rails生成一个会话标识符,这是一个长哈希 - 标识符由rails存储在服务器上,也通过cookie发送给用户。

在对应用程序的后续请求中,rails会话中间件将查看用户cookie以获取标识符,如果其有效,它将解密会话存储cookie并将其添加到Rails会话。 Rails默认执行所有操作,无需抬起手指。

您可以将此会话存储用于任何任意数据,只要其在浏览器对Cookie强加的4k限制内即可。使用其他存储(如Redis / Memcached或数据库存储)可以存储更多数据,但代价是性能会有所降低。

您通常认为它与授权相关的原因是,Cookie是将服务器上的用户ID与浏览器后面的当前用户链接的实际方式。