硬盘,主内存或其他地方。我不是要求将这些存储在数据库中的情况。
答案 0 :(得分:20)
默认情况下,rails使用cookie来存储会话数据。所有数据都存储在客户端中,而不是存储在服务器上。
答案 1 :(得分:16)
我建议您查看sessions chapter of rails security guide - 它会详细回答您的问题并帮助您了解其工作原理。
答案 2 :(得分:6)
当您在控制器操作中设置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
字符串,加密。 加密(和解密)以及签名(和验证)都是使用secrets.secret_key_base
中存储的服务器端密钥/config/secrets.yml
完成的。