是否有可能为某些特殊子域共享会话?例如,我有一些子域名:
和动态子域与正则表达式:user.*.example.com
(user.sub1.example.com)
当用户通过user.example.com
登录=>自动登录user.*.example.com
但没有登录admin.example.com
我怎样才能做到这一点?
在/config/initilizers/session_store.rb文件中添加:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
'domain:all'为在该会话期间访问的所有不同子域创建一个cookie(并确保它们在请求之间传递)。如果没有传递域参数,则意味着为在同一会话中访问的每个不同域创建新cookie,旧的cookie被丢弃。
最终是该表达式中的tld_length(顶级域长度)。默认tld_length为1,而manager.example.come的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
在https://www.botreetechnologies.com/blog/how-to-share-session-between-rails-4-applications查看解决方案
该博客讨论了Rails 4,但该解决方案不仅适用于任何版本的Rails,而且适用于任何Rack application