使用Rails 3路由,您如何仅允许来自127.0.0.1的请求?

时间:2010-06-16 00:29:49

标签: routes ruby-on-rails-3

我正在编写一个应用程序,其中几个路径只能从localhost访问。看起来这可以通过新的路由系统实现。

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

这有一些基于IP地址限制路由,并为您的路由设置IP地址黑名单的示例,但我对只有一个IP地址的白名单感兴趣。

如果像这样的东西有用的话会很酷:

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

但事实并非如此。我只是错过了正确的语法吗?

2 个答案:

答案 0 :(得分:13)

你可以这样做

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

或者

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

答案 1 :(得分:0)

按照Yehuda的帖子中的示例,你应该创建一个approriate对象来处理复杂的约束。所以,只需编辑该示例就可以了。有一行代码可以检查某些ip是否被列入黑名单:

!@ips.include?(request.remote_ip)

你应该编写类似的逻辑(但更简单)来检查request.remote_ip == 127.0.0.1