将此添加到您的 /config/initilizers/session_store.rb 文件中:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
'domain: all' 为该会话期间访问的所有不同子域创建一个 cookie(并确保它们在请求之间传递)。如果没有传递域参数,则意味着为在同一会话中访问的每个不同域创建一个新的 cookie,而旧的将被丢弃。
最终是该表达式中的 tld_length(顶级域长度)。例如,默认 tld_length 为 1,而 manager.example.come 的 tld_length 为 2,而 127.0.0.1.example.com 的 tld_length 为 5。所以我在 session_store.rb 文件中的 example.com 上的子域在开发中以及在生产中的任何其他内容如下。
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all, tld_length: 2
要配置每个环境,您可以使用以下内容:
Rails.application.config.session_store :cookie_store, key: '_my_app_session', domain: {
production: '.example.com',
development: '.example.dev'
}.fetch(Rails.env.to_sym, :all)
来源:https://github.com/plataformatec/devise/wiki/How-To:-Use-subdomains