Rails机架攻击宝石油门

Ram*_*Zor 7 ruby-on-rails ruby-on-rails-4 rackattack

我不知道为什么我不能使用机架攻击宝石这里我做了什么

的Gemfile

gem 'rack-attack' 
Run Code Online (Sandbox Code Playgroud)

我安装了宝石

配置/ application.rb中

config.middleware.use Rack::Attack
Run Code Online (Sandbox Code Playgroud)

初始化/机架attack.rb

class Rack::Attack

throttle('logins/ip', :limit => 5, :period => 60.seconds) do |req|
  if req.path == '/login' && req.post?
  Rails.logger.error("Rack::Attack Too many login attempts from IP: #{req.ip}")
  req.ip 
  end
end

end
Run Code Online (Sandbox Code Playgroud)

的routes.rb

post   'login'   => 'index#create'
root 'index#new'
get 'login' => 'index#new'
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 4.2.3和机架攻击宝石4.3.0

我想知道我想念的是什么

小智 5

请确保配置cache.store在初始化/架,attack.rb文件,你可以这样配置它:

class Rack::Attack
  ...
  cache.store = ActiveSupport::Cache::MemoryStore.new
  ...
end
Run Code Online (Sandbox Code Playgroud)


小智 0

您可能需要在开发环境中启用缓存

请设置config.cache_classes = trueconfig/environments/development.rb.