首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在rails 5中使用子域时出现的问题

在rails 5中使用子域时出现的问题
EN

Stack Overflow用户
提问于 2018-04-17 02:37:35
回答 2查看 300关注 0票数 0

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

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

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

代码语言:javascript
复制
  def require_account!
    redirect_to new_user_registration_url(subdomain: 'www') if !@account.present?
  end

它给了我这个before_action,我可以把它放到我的控制器中,以防止别人看到这个对象,但当我登录到这个应用程序时,我可以在thisdomain.lvh.me:3000/some_page上,然后进入anotherdomain.lvh.me:3000/some_page,仍然可以看到我的帐户数据。当我作为用户登录时,我还可以在其他域之间跳转。这对我来说是草率的,我想防止这种情况发生(最好不要使用公寓宝石,因为我的应用程序大部分都是公开共享的。我试着找了一些关于这方面的教程,但都无济于事。当我注销并以不同的用户身份登录时,同样的事情发生了,但他们的数据集发生了变化。

任何帮助,建议或帮助,我们将不胜感激!如果您需要任何进一步的帮助,请让我知道!

EN

回答 2

Stack Overflow用户

发布于 2018-04-17 03:10:52

您可以尝试添加另一个before_action

代码语言:javascript
复制
def authorize_user_domain!
  return unless @account&.has_subdomain?(current_subdomain) 
  render_404
end

我假设account.rb具有子域关联,因此那里的代码看起来类似于:

代码语言:javascript
复制
def has_subdomain?(subdomain)
  subdomains.include?(subdomain)
end

而且我认为在应用程序控制器中使用current_subdomain辅助方法也很好。

票数 1
EN

Stack Overflow用户

发布于 2018-04-17 03:57:09

使用devise?还有ActsAsTenant。

然后根据正在使用的子域,使用自定义方法在控制器中设置租户。包括在设备会话控制器中,如果用户不属于当前租户(在登录之前已经设置),则将其发送回注册页面。

Acts as tenant

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49864129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档