ruby-on-rails - 在 Rails 中的子域之间共享 session (cookie)?

标签 ruby-on-rails session devise

我有一个应用程序设置,其中每个用户都属于一个公司,并且该公司有一个子域(我正在使用 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/

相关文章:

ruby-on-rails - 使用 Google OAuth2.0 限制登录到 Ruby 上的特定白名单域名

ruby-on-rails - Rails 5.2.3 至 6.0.0 升级

ruby-on-rails - 自定义 Javascript Rails 管理员

ruby-on-rails - order_by 在每个 rails 3.1 block 中

node.js - 如何强制刷新 req.user?

wordpress - 在注销前和管理员登录后设置 cookie

php - Cookie session 驱动程序不会保存任何验证错误或闪存数据

ruby-on-rails - Rails 3 与设计 : No route matches/d/users/sign_out

mysql - ruby on Rails 调用另一个方法的 link_to 问题

ruby-on-rails - RSpec 路由规范 POST 请求问题