Devise:如何在子域之间共享会话(用户状态)

3

我的项目使用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以使用与所有不同子域一起工作的会话?
谢谢。

1
你重启了服务器吗? - Richard Peck
1
是的,我不想听起来无知,但你会惊讶于那些没有重新启动电脑就会问这个问题的人们。 - Richard Peck
1个回答

3
我们在子域名中使用以下内容:
# 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: https://dev59.com/uWkv5IYBdhLWcg3wtTC7#15009883

你应该尝试设置domain: :all,并且可能需要从哈希中删除tld_length

2
谢谢,我通过将域保留为“.name.app”但从中删除tld_length使其正常工作。 - Jason Silberman
1
@JasonSilberman,你成功地在同一域名下的不同应用程序之间共享会话,并使用相同的用户表了吗?我想使用Devise做同样的事情。有什么想法吗? - Sergio Gonzalez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接