Rails访问和操作user_ip_address

时间:2011-11-04 19:40:34

标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.1 request

我想检查设备IP地址到我网站(root to=>home#index)的次数,如果地址不止一次来到我的网站然后执行一段代码(任何东西)。我怎么做到这一点rails?换句话说,我如何访问和设置一个变量来存储用户ip_address登录号码index action?root页面是home #index。为了澄清更多用户不必是注册用户,我只是想要通过计算机IP地址跟踪。我需要帮助索引动作中注释掉的单词。有设计current_sign_in_ip,但我不确定这是否意味着解决这个问题的情况,因为我是一个非常新的设计和轨道将军。非常感谢你!

控制器

       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

1 个答案:

答案 0 :(得分: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。