2010-06-16 54 views
5

我正在寫一個應用程序,其中幾條路線只能從本地主機訪問。看起來這可能與新的路由系統有關。使用Rails 3路由,你如何只允許來自127.0.0.1的請求?

http://www.railsdispatch.com/posts/rails-3-makes-life-better

這有限制基於IP地址的路由,並設置一個IP地址黑名單你的路由的例子,但我感興趣的只有一個IP地址白名單。

這將是冷靜,如果是這樣的工作:

get "/posts" => "posts#show", :constraints => {:ip => '127.0.0.1'} 

但事實並非如此。我只是錯過了正確的語法?

回答

0

以下耶胡達的帖子中的例子,你應該創建一個適當的對象來處理複雜的約束。所以,編輯這個例子可能會有所幫助。還有,如果一些IP被列入黑名單,檢查的代碼行:

[email protected]?(request.remote_ip) 

你應該寫類似的邏輯(但更簡單),檢查是否request.remote_ip == 127.0.0.1

13

你可以做到這一點

get "/posts" => "posts#show", :constraints => {:ip => /127.0.0.1/} 

或本

constraints(:ip => /127.0.0.1/) do 
    get "/posts" => "posts#show" 
end 
+0

注意,因爲IP6,我不得不將其更改爲':IP => /127.0.0.1 | :: 1 /'。 ':: 1'是IP6本地主機。 – bradlis7 2017-02-02 20:38:38