添加子域约束
Adding subdomain constraint
我目前在 route.rb 文件中有以下行
resources :pages, only: %i[index show create]
展望未来,我希望我的用户通过专用子域访问 pages#show
。所以我添加了以下行:
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end
(我打算保留这两条路线以实现追溯兼容性)
允许用户通过pages.mydevdomain访问它。com/my-page-id
在开发环境中这样做时,我收到以下消息:
To allow requests to pages.mydevdomain.com, add the following to your environment configuration:
config.hosts << "pages.mydevdomain.com"
我已经完成并且有效。但是,如果我到达 http://pages.mydevdomain.com
,那么我就会看到我构建的整个应用程序,这意味着该子域不仅仅适用于 pages#show
,就像我想要的那样。
我对这个限制的理解是,您只能通过子域访问 pages#show 操作。但是您也允许使用 resources
方法进行访问。所以约束没有效果。
您并未限制对任何其他控制器的访问。也许您想像这样包装您的路线:
constraints subdomain: '' do
resources :pages, only: %i[index show create]
end
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end
我目前在 route.rb 文件中有以下行
resources :pages, only: %i[index show create]
展望未来,我希望我的用户通过专用子域访问 pages#show
。所以我添加了以下行:
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end
(我打算保留这两条路线以实现追溯兼容性)
允许用户通过pages.mydevdomain访问它。com/my-page-id 在开发环境中这样做时,我收到以下消息:
To allow requests to pages.mydevdomain.com, add the following to your environment configuration:
config.hosts << "pages.mydevdomain.com"
我已经完成并且有效。但是,如果我到达 http://pages.mydevdomain.com
,那么我就会看到我构建的整个应用程序,这意味着该子域不仅仅适用于 pages#show
,就像我想要的那样。
我对这个限制的理解是,您只能通过子域访问 pages#show 操作。但是您也允许使用 resources
方法进行访问。所以约束没有效果。
您并未限制对任何其他控制器的访问。也许您想像这样包装您的路线:
constraints subdomain: '' do
resources :pages, only: %i[index show create]
end
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end