2013-02-07 156 views
1

我知道这通常发生在控制器,但我想知道是否有可能在config/routes.rb限制基于特定IP(或范围IPS)?排序的白名单。Rails:可能限制基于IP地址(或范围?)的路由

例如我想这条路线限制对我们的子网唯一一款:

#config/routes.rb 
require 'sidekiq/web' 

MyApp::Application.routes.draw do 
    resources :users 
    ... 
    mount Sidekiq::Web, at: "/sidekiq"  # <== restrict this based on IP address 
    ... 
end 
+0

快速和肮脏的解决方案将在ApplicationController上添加'before_filter' ... – bdares

回答

3

基于来自例如Rails Docs你可以这样做:

#config/routes.rb 
require 'sidekiq/web' 

MyApp::Application.routes.draw do 
    resources :users 
    ... 
    mount Sidekiq::Web, at: "/sidekiq", :constraint => Whitelist.new 
    ... 
end 

class Whitelist 
    def initialize 
    @ips = Whitelist.retrieve_ips 
    end 

    def matches?(request) 
    @ips.include?(request.remote_ip) 
    end 

    def retrieve_ips 
    # get and return your whitelist of ips 
    end 
end 

This post by Yehuda Katz进入更多约束的细节以及如何使用它们。

+0

工作得很好......谢谢! – Meltemi