2010-06-16 25 views
5

Tôi đang viết một ứng dụng mà một số tuyến đường chỉ có thể truy cập được từ máy chủ cục bộ. Có vẻ như điều này là có thể với hệ thống định tuyến mới.Với Rails 3 tuyến đường, làm thế nào để bạn chỉ cho phép một yêu cầu từ 127.0.0.1?

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

này có ví dụ về các hạn chế tìm đường khác dựa trên địa chỉ IP, và thiết lập một địa chỉ danh sách đen chỉ IP cho tuyến đường của bạn, nhưng tôi quan tâm đến một danh sách trắng chỉ với một địa chỉ IP.

Nó sẽ là tuyệt vời nếu một cái gì đó như thế này làm việc:

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

Nhưng nó thì không. Tôi chỉ thiếu cú ​​pháp đúng?

Trả lời

0

theo ví dụ trong bài đăng của Yehuda, bạn sẽ tạo một đối tượng approriate để xử lý các ràng buộc phức tạp. vì vậy, chỉ cần chỉnh sửa ví dụ đó có thể hữu ích. có một dòng mã mà kiểm tra nếu một số ip là danh sách đen:

[email protected]?(request.remote_ip) 

bạn nên viết logic tương tự (nhưng đơn giản hơn) để kiểm tra nếu request.remote_ip == 127.0.0.1

13

bạn có thể làm

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

hay này

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

Lưu ý rằng kể từ khi IP6, tôi đã phải thay đổi nó để ': ip => /127.0.0.1 | :: 1 /'. ':: 1' là IP6 localhost. – bradlis7

Các vấn đề liên quan