2010-06-16 59 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