Ruby on rails 为一个Rails应用程序使用多个域名时保留会话
我有一个Rails 2.2.2应用程序,我想与多个客户端“共享”。每个客户端都有自己的域名和数据库。其目的是允许一个Rails应用程序“托管”多个网站 我使用Apache作为混合集群的前端,作为web服务器。为了让Rails知道哪个请求是针对哪个客户机的,Apache在每个请求中添加了一个“client_id”头。Rails使用这个“客户端id”来选择正确的数据库 只要我一次只能从一个域名访问它,这个功能就非常好。说“example1.com” 当许多用户同时从多个域名访问应用程序时,它甚至可以很好地工作 我遇到的一个问题是,当两个用户同时从两个域名访问应用程序时,cookies会以意外的方式重置 下面的日志片段说明了该问题: 第一个请求来自登录example1.com的用户1 第二个请求来自用户2,例如example2.com主页 第三个请求来自用户1,用于应用程序中的另一个页面。据推测,请求中包含原始cookie问题是,为什么Rails会发回不同的cookie??? 请注意,与其他几个问题不同,我没有尝试在多个域之间共享同一个cookie。上面示例中的用户1和用户2正在访问不同的域 --约翰Ruby on rails 为一个Rails应用程序使用多个域名时保留会话,ruby-on-rails,ruby,session,Ruby On Rails,Ruby,Session,我有一个Rails 2.2.2应用程序,我想与多个客户端“共享”。每个客户端都有自己的域名和数据库。其目的是允许一个Rails应用程序“托管”多个网站 我使用Apache作为混合集群的前端,作为web服务器。为了让Rails知道哪个请求是针对哪个客户机的,Apache在每个请求中添加了一个“client_id”头。Rails使用这个“客户端id”来选择正确的数据库 只要我一次只能从一个域名访问它,这个功能就非常好。说“example1.com” 当许多用户同时从多个域名访问应用程序时,它甚至可以
Cookie依赖于域,因此您应该使用不同的技术—一台服务器发布Cookie/创建会话。退房
Cookie依赖于域,因此您应该使用不同的技术—一台服务器发布Cookie/创建会话。退房
我不想追踪不同领域的用户。事实上,如果一个用户打开了两个浏览器,并且同时使用两个域,那么他有两个不同的会话cookie,每个域一个 我不想追踪不同领域的用户。事实上,如果一个用户打开了两个浏览器,并且同时使用两个域,那么他有两个不同的会话cookie,每个域一个 我通过消除共享的mongrel_集群,并为每个域提供自己的mongrel实例来“解决”这个问题 我希望通过共享一个混合集群来节省一些服务器资源,但要做到这一点,我需要找出如何解决这个cookie问题
顺便说一下,我在“AdvancedRailsRecipes”配方83“给用户自己的子域”中找到了部分解决方案。该配方还解释了如何为用户提供自己的域名,但它使用了与我尝试的不同的方法。好吧,我通过消除共享的mongrel_集群,并为每个域提供自己的mongrel实例来“解决”问题 我希望通过共享一个混合集群来节省一些服务器资源,但要做到这一点,我需要找出如何解决这个cookie问题 顺便说一下,我在“AdvancedRailsRecipes”配方83“给用户自己的子域”中找到了部分解决方案。该配方还解释了如何为用户提供自己的域名,但它使用的方法与我尝试的不同
**1st Request from USER 1 for example1.com**
Processing Admin::CmsController#index (for 75.127.142.66 at 2009-01-27 13:15:27) [GET]
Session ID: 00b9cfb6fd397e5c9934ea58eaef648d
>>> Request for client 90873721, EXAMPLE1.COM
Rendering template within layouts/admin/standard
Rendering admin/cms/list
Completed in 114ms (View: 14, DB: 81) | 200 OK [https://example1.com/admin/cms]
**2nd Request from User 2 for example2.com**
Processing CmsController#cms_show (for 64.1.215.163 at 2009-01-27 13:16:15) [GET]
Session ID: 4fed1c59001f7484a63fb6280376825a
Parameters: {"alias"=>"home.html"}
>>> Request for client 48218343, EXAMPLE2.COM
### alias: home.html
Rendering template within layouts/two-column
Rendering cms/cms_show
Completed in 23ms (View: 13, DB: 3) | 200 OK [http://example2.com/]
**3rd Request from User 1 for example1.com -- note session ID changes!!!**
Processing Admin::CmsController#index (for 75.127.142.66 at 2009-01-27 13:16:18) [GET]
Session ID: 85c178aa70ed2bef6a767e844bf6c6d6
>>> Request for client 90873721, EXAMPLE1.COM
####### 'admin/cms', 'index'
Redirected to actionsignincontroller/admin/user
Filter chain halted as [:check_authentication] rendered_or_redirected.
Completed in 4ms | 302 Found [https://example1.com/admin/cms]
**4th request -- redirected from 3rd request**
Processing Admin::UserController#signin (for 75.127.142.66 at 2009-01-27 13:16:18) [GET]
Session ID: 85c178aa70ed2bef6a767e844bf6c6d6
>>> Request for client 90873721, EXAMPLE1.COM
Rendering template within layouts/admin/standard
Rendering admin/user/signin
Completed in 10ms (View: 6, DB: 0) | 200 OK [https://example1.com/admin/user/signin]