2011-08-12 145 views
2

我想在我的管理控制器中登錄之前驗證IP地址。Rails設計驗證IP地址

before_filter :validate_ip 

我應該如何創建這個IP驗證?我只想寫在控制器中有權訪問的IP地址。

回答

0

第一個解決方案是動態的,因爲你可以填充在運行時數組:

def validate_ip 
    valid = %w[127.0.0.1 10.0.0.1] 
    redirect_to(login_path) unless valid.include?(request.remote_ip) 
end 

另一種方式來限制IP地址,在使用約束你的routes.rb

get '/admin' => 'admin#super_secure_action', :constraints => { :ip => %w[127.0.0.1 10.0.0.1] } 

# or 

constraints(:ip => %w[127.0.0.1 10.0.0.1]) do 
    # Every route defined in here will be restricted. 
    get '/admin' => 'admin#super_secure_action' 
end 

有關導軌和路線的更多信息,請務必查看:Rails Dispatch - The Powerful New Rails Router

+0

它有多安全?有沒有更好的驗證? –

+0

我不會僅僅依靠IP過濾,你應該使用密碼認證。兩種系統的組合應該是安全的。 –

+0

Btw增加了另一種解決方案! –