我正在Rails中创建一个测验游戏,并希望创建一个会话来存储当前用户的数据,以便跟踪他们正确回答的问题数量。我搜索过的所有教程都首先登录,然后生成一个会话,没有它我可以这样做吗?
编辑: 实际上我想知道如果没有用户模型这是否可行?
答案 0 :(得分:4)
是。 rails会话存储机制只是将会话ID与会话存储(默认情况下为cookie)链接。
它基本上是这样的 - 当用户第一次访问你的应用程序时,rails生成一个会话标识符,这是一个长哈希 - 标识符由rails存储在服务器上,也通过cookie发送给用户。
在对应用程序的后续请求中,rails会话中间件将查看用户cookie以获取标识符,如果其有效,它将解密会话存储cookie并将其添加到Rails会话。 Rails默认执行所有操作,无需抬起手指。
您可以将此会话存储用于任何任意数据,只要其在浏览器对Cookie强加的4k限制内即可。使用其他存储(如Redis / Memcached或数据库存储)可以存储更多数据,但代价是性能会有所降低。
您通常认为它与授权相关的原因是,Cookie是将服务器上的用户ID与浏览器后面的当前用户链接的实际方式。