Ruby on rails ruby on rails regexp或以
我试图防止用户过度使用某些操作 我的问题是,我不知道检查操作路径是否与我在YAML文件中定义的路径匹配的最佳方法是什么。正如我所看到的,它可以是正则表达式,也可以是类似于Ruby on rails ruby on rails regexp或以,ruby-on-rails,ruby,regex,yaml,Ruby On Rails,Ruby,Regex,Yaml,我试图防止用户过度使用某些操作 我的问题是,我不知道检查操作路径是否与我在YAML文件中定义的路径匹配的最佳方法是什么。正如我所看到的,它可以是正则表达式,也可以是类似于ends\u的方法 目前,我有以下半成品代码。我不确定是否应该以当前的方式在YAML中定义路径,也不确定是否在rack\u attack.rb中调用适当的比较 有人能帮我解释一下为什么他/她推荐的解决方案是这里最好的吗 亚马尔: rack_attack.rb @config = YAML.load_file('config/ra
ends\u的方法
目前,我有以下半成品代码。我不确定是否应该以当前的方式在YAML
中定义路径,也不确定是否在rack\u attack.rb
中调用适当的比较
有人能帮我解释一下为什么他/她推荐的解决方案是这里最好的吗
亚马尔:
rack_attack.rb
@config = YAML.load_file('config/rack_attack.yml').with_indifferent_access
def from_config(key, field)
@config[key][field] || @config[:default][field]
end
@config.keys.each do |key|
Rack::Attack.throttle(key, limit: from_config(key, :limit), period: from_config(key, :period)) do |req|
req.ip if /#{from_config(key, :path)}/.match(req.path.to_s) && from_config(key, :method) == req.env['REQUEST_METHOD']
end
end
我很难理解到底是什么问题。您当前的代码有效吗?还是代码有问题?或者你是在问“有更好的方法吗?”.end\u with?
和regexp的不同之处在于前者只需检查字符串是否以某个固定字符串结尾,而regexp是regexp,因此功能更强大。总的来说,你要选择最简单的方法。现在似乎正在工作。自从我问起这个问题,我就改成了结束语。我问这个是因为我不确定我做得对。通常,在rails中有一种更可取的方法。
@config = YAML.load_file('config/rack_attack.yml').with_indifferent_access
def from_config(key, field)
@config[key][field] || @config[:default][field]
end
@config.keys.each do |key|
Rack::Attack.throttle(key, limit: from_config(key, :limit), period: from_config(key, :period)) do |req|
req.ip if /#{from_config(key, :path)}/.match(req.path.to_s) && from_config(key, :method) == req.env['REQUEST_METHOD']
end
end