将登录限制为仅租户Ruby on Rails

时间:2018-11-28 02:27:59

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

我有一个由Apartment gem和Devise创建的多租户应用。

我希望具有子域的URL能够访问/users/sign_in,同时如果在根域上访问了它,则返回404。

这应该是有效的:

http://subdomain.lvh.me:3000/users/sign_in

这不应该:

http://lvh.me:3000/users/sign_in

在我的 routes.rb 中:

require 'root_domain_constraint'

Rails.application.routes.draw do

  constraints RootDomainConstraint do
    root 'pages#guest_landing'
  end

  devise_for :users

  root 'pages#tenant_landing'

end

在我的 root_domain_constraint.rb 中:

class RootDomainConstraint

  def self.matches? request
    subdomains = ['www']

    request.subdomain.blank? || subdomains.include?(request.subdomain)
  end

end

此当前设置允许用户使用子域和不使用子域(根域)登录。

如果我将devise :users移到constraints RootDomainConstraint块内。它将允许在根域而不是子域上登录。但是我想换个方式。

来宾登陆和租客登陆都可以。我相信有些东西我错过了。

0 个答案:

没有答案