ruby-on-rails - Rails 中的 session 到底是什么?从编码的角度来看,它与 Controller 、模型和 View 有何关系?

标签 ruby-on-rails ruby

你能提供一个简单的例子吗,因为我是rails菜鸟。

谢谢。

最佳答案

session 是服务器和客户端之间的对话;该对话框由一个或多个请求和响应组成。

Rails 为每个 session 存储一组变量,以便您可以在请求之间保留每个用户的状态。要访问 Controller 中的 session ,请使用方法session。它的行为类似于哈希,只不过它会在请求之间自动保留。如果您在一次请求期间在 session 中存储某些内容:

session[:foo] = 'foo'

然后您可以在稍后的请求中取回它:

@foo = session[:foo]

session 存储最常(但不是唯一)用于身份验证。如果您使用的是 devise 等身份验证 gem,它会使用 session 存储来跟踪登录者。

Rails(以及其他 Web 服务器)中的 session 存储被实现为键/值存储,该存储由键索引,通常为给定 session 随机生成。服务器将该 key 存储在提供给客户端的 cookie 中;客户端的浏览器会在每次请求时返回该 cookie。服务器从 cookie 中检索该 key 并使用它来检索 session 状态。 Rails 会为您处理所有这些事情,因此您通常不必担心。

session 存储由 Controller 管理。 View 和模型无法在没有欺骗的情况下访问它。

关于ruby-on-rails - Rails 中的 session 到底是什么?从编码的角度来看,它与 Controller 、模型和 View 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000181/

相关文章:

ruby-on-rails - 查询 : where has_many association does not contain specific value

javascript - Rails 4 - CoffeeScript 无法正常工作

javascript - 如何使用 AJAX 将 JS 变量传递给 Controller ​​?

ruby - 如何使用 Ruby 和 Rack 为 API 设置 redis?

ruby-on-rails - 从 Rails 中的主机/URL 获取基本域名

ruby-on-rails - 我们如何定义大整数?

ruby-on-rails - 重命名 Ruby on Rails 应用程序

ruby - 有没有什么好的ruby测试溯源方案?

ruby-on-rails - 尝试安装 ruby​​ for rail 时出错

ruby - 几个散列到网格中