2015-07-30 7 views
7

मैं कुछ यूआरएल के अनुरोध को थ्रॉटल करने के लिए https://github.com/kickstarter/rack-attack/#throttles का उपयोग कर रहा हूं।प्रति उपयोगकर्ता अनुरोध (रैक-हमले और तैयार) के साथ थ्रॉटल #

रैक-हमले दस्तावेज़ दिखाते हैं कि आईपी या अनुरोध पैरामीटर द्वारा थ्रॉटल कैसे करें, लेकिन मैं जो करना चाहता हूं वह प्रति उपयोगकर्ता थ्रॉटल अनुरोध है। तो आईपी कोई फर्क नहीं पड़ता, उपयोगकर्ता निश्चित समय सीमा में एन से अधिक अनुरोध करने में सक्षम होना चाहिए।

हम प्रमाणीकरण के लिए तैयार करते हैं और मैं अनुरोध के आधार पर उपयोगकर्ताओं की विशिष्ट पहचान करने का एक आसान तरीका नहीं सोच सकता।

क्या मुझे सत्र/कुकी में उपयोगकर्ता आईडी स्टोर करना चाहिए? शायद एक यूनिक हैश? ऐसा करने के लिए जाने का सबसे अच्छा तरीका क्या है?

उत्तर

9

यह पता लगाया। डेविस पहले ही सत्र में उपयोगकर्ता आईडी स्टोर करता है। कोड कुछ ऐसा दिखाई देगा:

Rack::Attack.throttle('something', limit: 6, period: 60.seconds) do |req| 
    req.env['rack.session']["warden.user.user.key"][0][0] if some_condition? 
end 
+0

ddgd, क्या आप मुझे बता सकते हैं कि 'अनुरोध सामग्री प्रकार' को कैसे जांचें। 'throttled_response' विधि में 'एप्लिकेशन/जावास्क्रिप्ट' या 'टेक्स्ट/एचटीएमएल'? http://stackoverflow.com/questions/36304993/sync-rack-request-and-response –

संबंधित मुद्दे