将以下内容添加到您的/config/initializers/session_store.rb文件中:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
“domain: all”会在会话期间为所有不同的子域创建一个cookie(并确保它们在请求之间传递)。如果没有传递domain参数,则意味着在同一会话中访问的每个不同域名都会创建一个新cookie,旧的cookie将被丢弃。
最终的tld_length(顶级域长度)在该表达式中起作用。默认的tld_length是1,而manager.example.com的tld_length为2,127.0.0.1.example.com的tld_length为5,例如。因此,在开发中针对example.com子域和生产中其他内容的session_store.rb文件中使用了以下内容。”
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
本文介绍如何在Rails应用程序中使用Devise gem和子域名来实现身份验证。该方法可以让用户使用不同的子域名访问同一个站点,并根据子域名来确定其所属的账户。
.example.com
)发送会话密钥,但出于安全原因,我只想为特定的域名发送会话(user.example.com
和user.*.example
),这可能吗? - Nguyen Ruby