gpt4 book ai didi

ruby-on-rails - rails : Dynamic session domain and sharing session between subdomains

转载 作者:行者123 更新时间:2023-12-04 06:18:28 28 4
gpt4 key购买 nike

我有一个有趣的案例。我正在为 Rails 2.3 应用程序开发白标签功能,但在设置动态 session 域时遇到了问题。

因此,每个白标都应该有自己的域:company1.com、company2.com、company3.com。更重要的是,他们每个人都应该支持子域并在它们之间共享 session 。

即test1.company1.com, test2.company1.com, company1.com <= 应该共享一个公共(public) session ; test1.example.com, example.com <= 应该共享一个公共(public) session 但不同于 company1.com 。

在常见情况下(对于单个基本域),它是这样完成的:

file:production.rb
config.action_controller.session[:domain] = '.company1.com'

如果我想支持多个域,我必须根据访问的站点域动态设置此配置选项。我目前正在尝试以这种方式完成它:

file:environment.rb
require 'dispatcher'
module ActionController
class Dispatcher
def set_session_domain
tld_size = SubdomainFu.tld_size+1
host_name = @env['HTTP_HOST'].split('.')[-tld_size,tld_size].join('.')
ActionController::Base.session = { :domain => ".#{host_name}" }
end
before_dispatch :set_session_domain
end
end

但是上面的代码不起作用。

您是否成功地做过类似的事情,或者您是否知道问题/解决方案可能出在哪里?

预先感谢您的宝贵时间

最佳答案

使用 ActionController::Base.session 是行不通的,因为它仅在初始化处理 session 的机架中间件时使用,因此仅在启动您的应用程序时使用。为了使上面的代码工作,你应该使用

@env['rack.session.options']

看这里的例子:

http://railsforum.com/viewtopic.php?id=41306

关于ruby-on-rails - rails : Dynamic session domain and sharing session between subdomains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com