Rails 访问和操作 user_ip_address

kat*_*tie 0 ruby-on-rails request devise ruby-on-rails-3 ruby-on-rails-3.1

我想检查设备 IP 地址访问我的网站的次数(root to=>home#index),如果该地址多次访问我的网站,则执行一段代码(任何内容)。我如何使用 Rails 实现这一点?换句话说,我如何访问并设置一个变量来存储用户 ip_address 登录的数量index action?根页面是 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
Run Code Online (Sandbox Code Playgroud)

bil*_*aha 5

您可以使用

ip_addr = request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

还:

request.remote_ip
Run Code Online (Sandbox Code Playgroud)

还想提一下,如果您位于负载均衡器后面,则 REMOTE_ADDR 可能会返回负载均衡器的 IP,而不是实际客户端的 IP。在这种情况下,您通常可以使用如下内容:

ip_addr = request.env['X_FORWARDED_FOR']
Run Code Online (Sandbox Code Playgroud)

所以我推荐request.remote_ip。如果存在,则返回 HTTP_CLIENT_IP 或 X_FORWARDED_FOR,否则返回 REMOTE_IP。