我有一个由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
块内。它将允许在根域而不是子域上登录。但是我想换个方式。
来宾登陆和租客登陆都可以。我相信有些东西我错过了。