我想了解在使用rails/devise登录用户时发生了什么。rails/devise如何处理cookie会话?
我创建了一个极小的rails应用程序,安装了devise并创建了User
devise模型。 一切工作正常,当我登录(使用remember me
)我得到一个会话cookie正如预期。
现在搞什么的是:rails如何处理浏览器通过cookie传递的会话信息?
我天真地期望一些信息存储在数据库中,但我不知道在哪里。没有session
表格,Users
中没有会话列,我在tmp
目录中找不到任何感兴趣的内容。
请注意,重新启动服务器不会终止我的会话。这当然是可以预料的,但现在我真的很想知道这里发生了什么样的魔法?
换句话说:服务器如何检查cookie的有效性以认证用户?
谢谢!
Devise在数据库中存储了一些信息('last_sign_in_at','last_sign_in_ip'等),但依靠cookies来模拟超时状态会话一致性。该cookie具有“TTL”或生存时间,并且在检查“记住我”时将该cookie写入浏览器。 (根据我的理解,这至少是默认/最典型的系统,相对于设计) – mecampbellsoup