gpt4 book ai didi

ruby-on-rails - session 在 Rails 中是如何工作的

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:40 30 4
gpt4 key购买 nike

我了解 Rails 中的 session 。大多数引用资料都说,下面是创建 session 的方法。

示例:

session[:id]=user.id

session 是一个全局哈希。我的疑问是,如果 session 是全局哈希,那么如果有多个用户尝试登录,则 session 变量会获取覆盖与否?因为,将只有一个全局哈希。因此,如果数百万用户登录,那么相同的“session[:id]”如何保持所有用户 session 。是否可以在一个变量中存储多个值。以及如何删除特定 session 用户。那么,rails 中是如何处理 session 的呢?

最佳答案

session 不是全局哈希。这是一种在每个请求的上下文中返回新散列的方法。该哈希的创建方式取决于底层 session 存储。

让我们来看看 2 个典型的 session 存储。

加密的 cookie 存储

这是 Rails 应用程序的默认 session 存储。 Rails 序列化然后将整个 session 哈希加密到 cookie 中,并将这些 cookie 存储在客户端(例如浏览器)上。每次请求到达 Rails 应用程序时,Rails 都会解密然后将该 session cookie 反序列化为哈希。该散列是方法 session 返回的内容。

Redis session 存储

Rails 不附带此 session 存储。这是一个单独的 gem 。

有了这个 session 存储,Rails 序列化 session ,给它一个 ID(称为 session ID),并将 ID-哈希对存储到 Redis 中。 Rails 然后将 session ID 设置为 cookie,并将该 cookie 发送给客户端。每次请求到达 Rails 应用程序时,Rails 都会从 cookie 中检索 session ID,从 Redis 中获取与该 session ID 关联的序列化 session ,并将其反序列化为哈希。该散列是方法 session 返回的内容。

关于ruby-on-rails - session 在 Rails 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601527/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com