【问题标题】:Does Ruby on Rails lock user sessions?Ruby on Rails 会锁定用户会话吗?
【发布时间】:2013-01-14 23:53:49
【问题描述】:

我来自 PHP 背景,对 RoR 用户会话有疑问。默认情况下,PHP 使用带有写锁的文件存储来存储用户会话数据。因此它可以防止同一客户端同时处理多个请求。 RoR 如何处理会话?

【问题讨论】:

  • 你为什么要担心它?如果它确实是一个问题,你可以确定一个成熟的框架知道它。
  • 默认情况下,rails 将会话保存在用户 cookie 中,有关更多信息,请参阅 rails 指南guides.rubyonrails.org/security.html
  • @WaleedKhan 我想知道不耐烦的用户是否可以在使用 find_or_create_by_column 的代码中创建竞争条件,其中 column 是唯一索引。
  • @WaleedKhan 这里绝对有竞争条件,所以这绝对是值得“担心”(即了解)的事情。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

rails 中的默认会话存储将整个会话数据存储在会话 cookie 本身(称为 cookiestore)中。

这样做的一个副作用是,如果 2 个重叠请求都尝试更新会话,那么最后一个将响应发送回客户端的请求“获胜”。

我认为 Rails 常用的任何会话存储都没有您描述的并发属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2012-12-05
    • 2011-07-24
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多