Rails&公寓:根据cookie或域名转换租户

时间:2014-10-31 19:44:00

标签: ruby-on-rails session multi-tenant apartment-gem

我正在使用Apartment gem和Rails 4.1设置多租户应用。

我的方法是管理界面将托管在单个域上,然后在自定义域上提供特定于租户的数据。管理用户将能够属于多个租户,并且能够在管理界面中切换租户而无需切换域。

使用Apartment,我已经能够使用会话cookie在租户之间切换而没有任何问题。这是我的代码:

class ApplicationController < ActionController::Base
  before_filter :check_tenant

  private 

  def check_tenant
    if session[:current_tenant] and Apartment::Tenant.current_tenant != session[:current_tenant]
      Apartment::Tenant.switch(session[:current_tenant])
    elsif !session[:current_tenant]
      Apartment::Tenant.switch() # Revert to the primary tenant
    end
  end
end

我遇到的困难是Apartment在中间件级别提供了基于域名的切换,我希望保持这种方式,因为我认为中间件比使用before_filter更快。我看到如何实现一个通用的中间件来根据请求切换租户,但我似乎无法访问和解密传递给中间件的proc中的会话存储。

由于使用会话存储似乎对管理界面有意义,您是否有任何关于在中间件级别访问会话存储的建议,或者将这两个方向放在一起的其他选择?

或者我只是担心让租户切换到中间件级别?

0 个答案:

没有答案