我正在尝试创建一个 IP 地址数组,以便当应用程序运行时,Rack-Attack 可以从允许访问该应用程序的 IP 地址集中进行识别。所以我所做的如下:
a = "127.0.0.1"
Rack::Attack.blacklist('allow from localhost') do |req|
p "#{'127.0.0.1' == req.ip} "
a != req.ip
end
上面的方法有效,因此 localhost 可以访问该应用程序,但我尝试了以下方法,但似乎不起作用:
a = "127.0.0.1", "1.2.3.4"
Rack::Attack.blacklist('allow from localhost') do |req|
a.select{|x| x != req.ip}.join("")
end
有人可以解释执行此操作的正确方法是什么。你可以看到我创建了一个数组。我想Rack::Attack
检测阵列中的IP地址是否有访问权限。
执行此操作的有效方法是使用Set http://www.ruby-doc.org/stdlib-2.1.2/libdoc/set/rdoc/Set.html,一个类似于数组的容器,但提供对单个唯一元素的快速查找。
因此,考虑到这一点重写:
allowed = %w[ 127.0.0.1 1.2.3.4 ].to_set
Rack::Attack.blacklist('allow from localhost') do |req|
!allowed.include?(req.ip)
end
在您的原始声明中:
a = "x", "y"
在这种情况下a
被分配给该列表中的第一项,"x"
,其余部分被忽略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)