我有一个应用程序设置,其中每个用户都属于一个公司,并且该公司有一个子域(我正在使用 basecamp 样式子域)。我面临的问题是,rails 正在创建多个 cookie(一个用于 lvh.me,另一个用于 subdomain.lvh.me),这导致我的应用程序中出现相当多的中断(例如,尽管一次所有请求,闪存消息仍然持续存在)已登录)。
我的/cofig/initilizers/session_store.rb 文件中有这个:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
域名: :all 似乎是我在 Google 上找到的标准答案,但这似乎对我不起作用。任何帮助表示赞赏!
最佳答案
事实证明,“domain: all”为该 session 期间访问的所有不同子域创建一个 cookie(并确保它们在请求之间传递)。如果没有传递任何域参数,则意味着为同一 session 中访问的每个不同域创建一个新的 cookie,并丢弃旧的 cookie。我需要的是一个在整个 session 过程中保持不变的 cookie,即使域发生变化也是如此。因此,通过传递 domain: "lvh.me"
解决了开发中的问题。这会创建一个保留在不同子域之间的 cookie。
对于任何需要进一步解释的人来说,这是一个很好的链接: http://excid3.com/blog/sharing-a-devise-user-session-across-subdomains-with-rails-3/
关于ruby-on-rails - 在 Rails 中的子域之间共享 session (cookie)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402777/