轨道/设计如何处理 cookie 会话



我想了解使用 rails/设计登录用户时到底发生了什么。

我创建了一个最小的rails应用程序,安装了设计并创建了一个User设计模型。一切正常,当我登录(使用 remember me )时,我得到了一个会话 cookie,就像预期的那样。

现在困扰我的是:rails如何处理浏览器通过cookie传递的会话信息?

我天真地期望一些信息存储在数据库中,但我看不到在哪里。没有session表这样的东西,Users中没有会话列,我在tmp目录中找不到任何感兴趣的东西。

请注意,重新启动服务器不会终止我的会话。这当然是意料之中的,但现在我真的很想知道这里正在发生什么样的魔法?

换句话说:服务器如何检查cookie的有效性以验证用户?

谢谢!

默认的

rails 会话存储是 CookieStore。 这意味着所有会话数据都存储在cookie中,而不是存储在任何地方的数据库中。 在 Rails 3.2 中,cookie 经过签名以防止篡改,但未加密。 在Rails 4中,它通常是默认加密的。 它位于 cookie 中的事实是它在服务器重新启动后持续存在的方式。 这也意味着您只能存储4k的数据,并且您不希望在Rails <4中存储任何敏感数据。 无论如何,最好在会话中保留最少的数据。

您还可以选择将会话数据存储在数据库中,并在 Cookie 中仅具有会话 ID。

我前一周给出的这个答案有一些额外的信息可能有用:

在我开始在线阅读会议之前,会议对我来说很有意义

此外,CookieStore 的 rails api 文档给出了一个很好的总结:

http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html

最新更新