0

我读过了

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

  • 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.comexampleapp.user1.com.

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

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

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

提前致谢!

4

2 回答 2

1

:domain => :all 上的 cookie 配置可能有效。

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

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

于 2012-07-11T22:47:57.337 回答
0

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

于 2010-04-13T13:33:19.547 回答