是否可以为某些特殊子域共享会话?例如,我有一些子域:
和带有正则表达式的动态子域:user.*.example.com
(user.sub1.example.com)
用户通过user.example.com
登录=>在user.*.example.com
上自动登录但未登录admin.example.com
我该怎么做?
答案 0 :(得分:0)
将此添加到您的/config/initilizers/session_store.rb文件中:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', 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
答案 1 :(得分:0)
在https://www.botreetechnologies.com/blog/how-to-share-session-between-rails-4-applications上查看解决方案
博客讨论了Rails 4,但是该解决方案不仅适用于Rails的任何版本,而且适用于任何Rack application