如何在cname前向支持rails saas软件中处理会话域

时间:2010-04-12 14:21:32

标签: ruby-on-rails session dns saas cname

我已阅读

但我无法获得以下设置的解决方案:

  • Rails中的SaaS Webapp正在example.com
  • 下运行
  • 所有用户都有sumbdomain,例如user1.example.com
  • 用户可以创建一个cname转发,例如。 exampleapp.user1.com - > user1.example.com

在用户尝试通过exampleapp.user1.com登录之前,一切正常。 SaaS应用程序无法正确设置会话域,因为它在应用启动时已配置为静态。

config.action_controller.session = {
  :session_key => '_example_session',
  :domain => ".example.com",
  :secret      => 'abc'
}

请求失败并显示ActionController::InvalidAuthenticityToken。这是正确的,因为域名已从.example.com更改为exampleapp.user1.com

如何在运行时更改域配置?我知道“传入”域exampleapp.user1.com属于user1,所以我想在控制器中执行类似的操作:

session :domain => 'exampleapp.user1.com'

或者我是否可以始终在当前请求域上设置会话域? 我知道有可能以某种方式,因为有些应用程序提供了这种功能。

提前致谢!

2 个答案:

答案 0 :(得分:1)

:domain => :cookie配置中的所有内容都可以正常工作。

对于CNAME'd域,它将设置为.theirdomain.com

对于您的自定义子域名,它将转到.yourdomain.com,这可能会也可能不会很好

答案 1 :(得分:0)

只是不要设置域,因为显然您不需要在example.com和user1.example.com之间共享会话cookie。通过不指定域,只需为当前请求域设置默认cookie行为。