【问题标题】:How to handle session domains in a cname forward supporting rails saas software如何在支持 Rails SaaS 软件的 cname 前处理会话域
【发布时间】:2011-02-07 00:59:42
【问题描述】:

我读过

但我无法为以下设置找到解决方案:

  • Rails 中的 SaaS Web 应用在 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'

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 好的,这是一个可行的解决方案。在创建 cookie 之前进行白名单检查会很好……现在必须在创建 cookie 之后进行。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2015-01-05
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多