2010-06-16 5 views
5

Sto scrivendo un'app in cui alcuni percorsi dovrebbero essere accessibili solo da localhost. Sembra che questo sia possibile con il nuovo sistema di routing.Con le rotte Rails 3, come si accettano le richieste solo da 127.0.0.1?

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

Questo ha esempi di restringere le vie in base all'indirizzo IP, e la creazione di un indirizzo IP lista nera per i vostri percorsi, ma io sono interessato a una whitelist con un solo indirizzo IP.

Sarebbe bello se qualcosa di simile ha funzionato:

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

Ma non lo fece. Mi manca solo la sintassi corretta?

risposta

0

seguendo l'esempio nel post di Yehuda, è necessario creare un oggetto appropriato per gestire i vincoli complessi. quindi, solo modificare quell'esempio potrebbe aiutare. c'è una riga di codice che controlla se qualche IP è nella lista nera:

[email protected]?(request.remote_ip) 

si dovrebbe scrivere logica simile (ma più semplice) che controlla se request.remote_ip == 127.0.0.1

13

si può fare questo

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

o questo

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

Nota che, dal momento IP6, ho dovuto cambiare a ': ip => /127.0.0.1 | :: 1 /'. ':: 1' è IP6 localhost. – bradlis7