【发布时间】:2014-02-14 15:17:02
【问题描述】:
我想了解使用 rails/devise 登录用户时的实际情况。
我创建了一个最小的 rails 应用程序,安装了设计并创建了一个 User 设计模型。
一切正常,当我登录(使用remember me)时,我得到了一个会话cookie,正如预期的那样。
现在困扰我的是:rails 如何处理浏览器通过 cookie 传递的会话信息?
我天真地期望将一些信息存储在数据库中,但我不知道在哪里。没有 session 表之类的东西,Users 中没有会话列,我在 tmp 目录中找不到任何感兴趣的内容。
请注意,重新启动服务器不会终止我的会话。这当然是意料之中的,但现在我真的很想知道这里发生了什么样的魔法?
换句话说:服务器如何检查 cookie 的有效性以验证用户身份?
谢谢!
【问题讨论】:
-
Devise 将一些信息存储在数据库中(
last_sign_in_at、last_sign_in_ip等),但依赖 cookie 来模拟有状态会话的超时一致性。 Cookie有一个“TTL”或时间的时间,并且当检查“记住我”时,Cookie将写入浏览器。 (据我了解,这至少是相对于 Devise 的默认/最典型系统。)
标签: ruby-on-rails authentication devise