Ruby on rails 在rails 5中使用子域时出现问题

Ruby on rails 在rails 5中使用子域时出现问题,ruby-on-rails,Ruby On Rails,我正在用Ruby 2.4.0在Rails 5中构建一个应用程序 我的应用程序基于用户所属的帐户运行子域(一个帐户也将有许多用户与其关联)。我试图实现的是锁定子域,以便用户只能登录或访问帐户模型中存在的子域。如果子域不存在,则应将其重定向到帐户创建页面 我现在在我的应用程序控制器中有以下方法: def require_account! redirect_to new_user_registration_url(subdomain: 'www') if !@account.present

我正在用Ruby 2.4.0在Rails 5中构建一个应用程序

我的应用程序基于用户所属的帐户运行子域(一个帐户也将有许多用户与其关联)。我试图实现的是锁定子域,以便用户只能登录或访问帐户模型中存在的子域。如果子域不存在,则应将其重定向到帐户创建页面

我现在在我的应用程序控制器中有以下方法:

  def require_account!
    redirect_to new_user_registration_url(subdomain: 'www') if !@account.present?
  end
它给了我这个在我进入我的控制器之前的动作,以防止有人看到对象,但是当我登录应用程序时,我可以在
thisdomain.lvh.me:3000/some_页面
上,然后进入
anotherdomain.lvh.me:3000/some_页面
,仍然可以看到我的帐户数据。当我以用户身份登录时,我还可以在其他域之间跳转。这对我来说是草率的,我想防止这种情况发生(最好不要使用公寓gem,因为我的大部分应用程序都是公开共享的。我试图找到一些关于这方面的教程,但没有效果。当我以不同的用户身份注销和登录时,同样的事情会发生,但使用的是他们的数据集


非常感谢您在此提供的任何帮助、建议或帮助!如果您在此需要任何进一步的帮助,请告诉我!

您可以在采取行动之前尝试添加其他帮助

def authorize_user_domain!
  return unless @account&.has_subdomain?(current_subdomain) 
  render_404
end
我假设account.rb具有子域关联,因此那里的代码看起来类似于:

def has_subdomain?(subdomain)
  subdomains.include?(subdomain)
end

我认为在应用程序控制器中有
current\u子域
helper方法也很好

您可以尝试在\u操作之前添加另一个方法

def authorize_user_domain!
  return unless @account&.has_subdomain?(current_subdomain) 
  render_404
end
我假设account.rb具有子域关联,因此那里的代码看起来类似于:

def has_subdomain?(subdomain)
  subdomains.include?(subdomain)
end

我认为在应用程序控制器中有
current\u子域
helper方法也很好

使用designe?也可以作为租户

然后根据用户使用的子域,使用自定义方法在控制器中设置租户。如果用户不属于当前租户(在登录前已设置),请在Desive sessions控制器中包含该租户,并将其发送回注册页


使用设备?也可作为承租人

然后根据用户使用的子域,使用自定义方法在控制器中设置租户。如果用户不属于当前租户(在登录前已设置),请在Desive sessions控制器中包含该租户,并将其发送回注册页