会话变量在哪里存储在Rails中?

时间:2011-09-06 10:13:45

标签: ruby-on-rails session-variables

硬盘,主内存或其他地方。我不是要求将这些存储在数据库中的情况。

3 个答案:

答案 0 :(得分:20)

默认情况下,rails使用cookie来存储会话数据。所有数据都存储在客户端中,而不是存储在服务器上。

答案 1 :(得分:16)

我建议您查看sessions chapter of rails security guide - 它会详细回答您的问题并帮助您了解其工作原理。

答案 2 :(得分:6)

在Rails中,会话对象在cookie内来回发送。

当您在控制器操作中设置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字符串,加密
  • 防止邪恶 使用篡改cookie的人数字签名

加密(和解密)以及签名(和验证)都是使用secrets.secret_key_base中存储的服务器端密钥/config/secrets.yml完成的。