我正在编写一个应用程序,其中几个路径只能从localhost访问。看起来这可以通过新的路由系统实现。
http://www.railsdispatch.com/posts/rails-3-makes-life-better
这有一些基于IP地址限制路由,并为您的路由设置IP地址黑名单的示例,但我对只有一个IP地址的白名单感兴趣。
如果像这样的东西有用的话会很酷:
get "/posts" => "posts#show", :constraints => {:ip => '127.0.0.1'}
但事实并非如此。我只是错过了正确的语法吗?
答案 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