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

发布于 2024-12-03 01:29:06 字数 37 浏览 2 评论 0原文

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

hard disk, main memory or somewhere else. I am not asking for the case where these are stored in database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

長街聽風 2024-12-10 01:29:06

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

By default rails uses cookies to store the session data. All data is stored in the client, not on the server.

迷鸟归林 2024-12-10 01:29:06

我建议您查看 rails 安全指南的会话章节 - 它回答了您的问题详细说明并将帮助您了解其工作原理。

I suggest you to take a look into sessions chapter of rails security guide - it answers your question in detail and will help you to understand how it works.

孤独岁月 2024-12-10 01:29:06

在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,使用数字签名

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

In Rails, session object is sent back and forth inside cookies.


When you set session[:user_id] = 3 inside of your controller action, the response sent from that action will have a header Set-Cookie: my-session-cookie.
From now on browser will automatically send a header Cookie: my-session-cookie back to server on every request.

This is how my-session-cookie usually looks:

_Hello_session=BAh7B0kiD3%3D%3D--dc40a55cd52fe32bb3b84ae0608956dfb5824689

which translates into:

_Hello_session=<encrypted user_id=3>--<digital signature>
  • Hello is the name of your Rails app.
  • To prevent evil people from
    understanding a=b string, it's encrypted.
  • To prevent evil
    people from tampering cookies, digital signature is used.

Both encryption (and decryption), and signing (and verifying) are done using a server-side secret key secrets.secret_key_base stored in /config/secrets.yml.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文