【问题标题】:Rails - how to delete duplicate cookies across subdomains?Rails - 如何跨子域删除重复的 cookie?
【发布时间】:2017-05-09 17:23:25
【问题描述】:

因为我想开始在我的网站上支持跨子域登录。所以我从

更改了我的会话存储配置
MyApp::Application.config.session_store :cookie_store,
  key: '_my_app_session'

MyApp::Application.config.session_store :cookie_store,
  key: '_my_app_session',
  domain: '.local.host', # I'm using *.local.host for 127.0.0.1
  tld_length: 2

之后,用户获得了 2 个与下表同名的 cookie,导致用户可能被注销。我使用的是设计,它只删除了.local.host下的_my_app_session。所以用户一直保持登录状态。

Name                Value           Domain
_my_app_session     abc             www.local.host
_my_app_session     xyz             .local.host

如何删除这两个 cookie?

【问题讨论】:

  • 你可以试试domain: 'local.host'吗?
  • 但我想跨子域共享 cookie,而不仅仅是 local.host
  • 是的,我想在这种情况下子域也将共享相同的 cookie。
  • @31piy 4?为什么?我也试过local.host,但没用。
  • 请忽略我对 TLD 长度的评论。

标签: ruby-on-rails session cookies devise subdomain


【解决方案1】:

刚刚发现 sidekiq/web 导致我们出现这种情况。

我们的应用程序在子域上运行,并且我们将会话配置为在所有子域之间共享,因此为 .domain.com 创建了 cookie。但每次我访问/sidekiq 时,都会为sub.domain.com 创建一个新会话。

要在 routes.rb 中解决这个问题,我必须这样做:

Sidekiq::Web.set :sessions, { domain: ".domain.com" }
mount Sidekiq::Web => '/sidekiq'

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2011-07-07
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多