硬盘、主内存或其他地方。我不是在询问它们存储在数据库中的情况。
默认情况下,Rails使用cookie来存储会话数据。所有的数据都存储在客户端,而不是服务器上。
我建议您查看Rails安全指南的会话章节 - 它详细回答了您的问题并帮助您理解其工作原理。
cookiestore
的话,session
变量中的数据将会丢失,对吗? - rubyprince当您在控制器操作中设置session[:user_id] = 3
时,从该操作发送的响应将具有标头Set-Cookie: my-session-cookie
。
从现在开始,浏览器将自动在每个请求上向服务器发送标头Cookie: my-session-cookie
。
这通常是my-session-cookie的样子:
_Hello_session=BAh7B0kiD3%3D%3D--dc40a55cd52fe32bb3b84ae0608956dfb5824689
这翻译成:
_Hello_session=<encrypted user_id=3>--<digital signature>
Hello
是你的Rails应用程序的名称。a=b
,它被加密。加密(和解密)以及签名(和验证)都使用存储在/config/secrets.yml
中的服务器端秘钥secrets.secret_key_base
执行。
sessionId+database
和基于非加密cookie的会话
,但这个是默认选项。 - Evgenia Karunus
session
变量存储在服务器端,而cookie
变量存储在客户端。所以,如果我们使用cookiestore
,重置浏览器cookies
,session
变量也将丢失,对吗? - rubyprince