0

我想檢查設備IP地址來到我的網站(root to=>home#index)的次數,如果地址來到我的網站不止一次然後執行一段代碼(任何東西)。我該如何完成與軌道?換句話說我如何訪問和設置一個變量來存儲用戶ip_address登錄號碼在index action?根頁面是home#index.To澄清更多的用戶不必是一個註冊用戶,我只是想跟蹤計算機的IP地址。我需要幫助與索引行動註釋掉的話。有設計current_sign_in_ip,但我不知道這是否意味着解決這個問題的情況下,因爲我是非常新的設計和鐵軌一般。謝謝你這麼多!Rails訪問和操作user_ip_address

控制器

 class HomeController < ApplicationController 

     def index 
     #access user ip address 
     #set a variable to increment number of times the address come to a site 
     # if no_of_ip_login is_greater_than_1 #In other words if it is a returning user 

     redirect_to :controller=>"home" ,:action=>"show" 
     end 

     end 

回答

4

您可以使用

ip_addr = request.env['REMOTE_ADDR'] 

也:

request.remote_ip 

只是想還提到,如果你是在負載平衡器後面,則 REMOTE_ADDR可能返回負載均衡器的IP,而不是實際的客戶端。 在這種情況下,通常可以使用類似:

ip_addr = request.env['X_FORWARDED_FOR'] 

所以我建議request.remote_ip。它返回HTTP_CLIENT_IP或 X_FORWARDED_FOR(如果存在),否則返回REMOTE_IP。

+0

謝謝你的答案,但我怎麼知道我是否在負載均衡器後面?對不起,我是非常新的rails – katie

+0

負載平衡是一種計算機網絡方法,可將工作負載分佈到多臺計算機或計算機集羣中。如果您的服務器有負載均衡器,然後ip_addr = request.env ['REMOTE_ADDR']只會在這種情況下返回負載均衡器的IP.Its。但request.remote_ip將始終返回給用戶IP。 –

+0

然後我認爲'request.remote_ip'是更好的選擇。我將在heroku上進行部署,如果該信息有幫助的話。使用其中一個的優點或缺點是什麼? – katie