2010-06-16 2 views
5

Ich schreibe eine App, wo mehrere der Routen nur von localhost aus erreichbar sein sollen. Es sieht so aus, als ob dies mit dem neuen Routing-System möglich ist. DieseMit Rails 3 Routen, wie erlauben Sie nur Anfragen von 127.0.0.1?

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

hat Beispiele beschränken Routen auf Basis von IP-Adresse und Einrichten einer IP-Adresse schwarze Liste für Ihre Routen, aber ich habe Interesse an einer weißen Liste mit nur einer IP-Adresse.

Es wäre cool, wenn so etwas wie dies funktioniert:

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

Aber es kam nicht. Fehle ich gerade die richtige Syntax?

Antwort

0

dem Beispiel in Yehudas Beitrag folgend, sollten Sie ein geeignetes Objekt erstellen, um komplexe Einschränkungen zu behandeln. Das Bearbeiten dieses Beispiels könnte also helfen. es gibt eine Codezeile, die, wenn einige ip prüft die schwarze Liste gesetzt wird:

[email protected]?(request.remote_ip) 

sollten Sie eine ähnliche Logik schreiben (aber einfacher), die überprüft, ob request.remote_ip == 127.0.0.1

13

Sie dieses

tun können
get "/posts" => "posts#show", :constraints => {:ip => /127.0.0.1/} 

oder diese

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

Beachten sie, dass seit IP6, musste ich es ändern, um ': ip => /127.0.0.1 | :: 1 /'. ':: 1' ist IP6 localhost. – bradlis7