मैं rack-throttle
का उपयोग अपने रेल 3 आवेदन में रेट-सीमित इंजन के रूप में कर रहा हूं। मैंने कस्टम रेट सीमित तर्क को परिभाषित करने के लिए Rack::Throttle::Interval
पर आधारित अपनी कक्षा बनाई है। मैं जांच कर रहा हूं कि अनुरोध सटीक नियंत्रक और सटीक कार्रवाई के लिए किया गया है या नहीं। अगर मैं GET
अनुरोध करता हूं तो यह ठीक काम करता है। हालांकि अगर मैं POST
अनुरोध भेजता हूं तो मुझे कुछ समस्याएं मिलती हैं।रेल आवेदन में थ्रॉटलिंग POST अनुरोध
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
path_info = Rails.application.routes.recognize_path request.url rescue path_info = {}
if path_info[:controller] == "some_controller" and path_info[:action] == "some_action"
super
else
true
end
end
end
यहाँ मेरी नियंत्रक क्रियाएँ
def question
#user is redirected here
end
def check_answer
#some logic to check answer
redirect_to question_path
end
मेरे मार्गों
हैंget "questions" => "application#question", :as => "question"
post "check_answer" => "application#check_answer", :as => "check_answer"
संपादित करें:
समस्या यह है कि POST
अनुरोध ताकि विधि allowed?
कहा जाता है आवेदन करने के लिए आ रहे हैं । लेकिन जब मैं Rails.application.routes.recognize_path
पर कॉल करता हूं तो मुझे Route set not finalized
अपवाद मिलता है। कैसे मैं मिडलवेयर application.rb
class Application < Rails::Application
#Set up rate limiting
config.require "ip_limiter"
config.require "ip_user_agent_limiter"
config.middleware.use IpLimiter, :min => 0.2
config.middleware.use IpUserAgentLimiter, :min => 2
end
दोनों IpLimiter
और IpUserAgentLimiter
में जोड़ा जाता है से प्राप्त कर रहे rack-throttle
की मदद से सटीक नियंत्रक का सही कार्रवाई पर पोस्ट अनुरोध का एक बहुत भेजने से एक उपयोगकर्ता को रोका जा सकता कस्टम
अपने आवेदन में आप अपने रैक :: थ्रॉटल :: अंतराल सम्मिलित है? – shingara
@ शिंगारा इसे 'application.rb' – RomanKapitonov
में शामिल किया गया है? विधि POST विधि में कॉल है या नहीं? क्या आप उस भाग को पेज़ कर सकते हैं जहां आप अपने आवेदन में इस मिडलवेयर को जोड़ते हैं? – shingara