【问题标题】:Devise: Sharing sessions (user state) across subdomains设计:跨子域共享会话(用户状态)
【发布时间】:2016-01-04 18:46:30
【问题描述】:

我的项目使用 Rails 4.2、Ruby 2.2 和 Devise 3.5 设置。

我有一个包含多个子域的应用,我希望在这些子域之间共享用户的状态(登录/退出)。

我已经这样设置了我的会话存储:

config.session_store :cookie_store, :key => '_app_name_session', :domain => '.name.app', :tld_length => 2

但是这似乎没有做任何事情,因为当我在 Chrome 中检查会话时,它被称为 _app_session,这是不正确的会话名称,所以这让我认为 rails 忽略了这些设置。

如何设置 Devise 以使用适用于所有不同子域的会话?

谢谢

【问题讨论】:

  • 你的服务器重启了吗?
  • 是的,我不想听起来很无知,但你会对那些提出这个问题的人感到惊讶没有重新启动:)

标签: ruby-on-rails ruby session devise


【解决方案1】:

我们将以下内容用于我们的子域:

# config/initializers/session_store.rb
# Be sure to restart your server when you modify this file.

Rails.application.config.session_store :cookie_store, key: '_[[name]]_session', domain: :all # tld_length info here: http://stackoverflow.com/questions/10402777/share-session-cookies-between-subdomains-in-rails/15009883#15009883

您应该尝试设置 domain: :all 并可能从哈希中删除 tld_length

【讨论】:

  • 谢谢,所以我通过将域保持为“.name.app”但从中删除 tld_length 来使其工作。
  • @JasonSilberman 您是否设法使用相同的用户表在同一域下的不同应用程序之间共享会话?我想对 Devise 做同样的事情。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
相关资源
最近更新 更多