2016-04-21 115 views
1

我正在使用Rest API和節點js。如何在一定的時間內阻止api重複請求

我的要求是,如果我在特定的時間間隔內重複請求,我需要阻止它15分鐘(因爲令牌在15個薄荷糖中過期)。

我的條件只允許來自同一個客戶端的10個請求中的15個請求。 一旦您從第11秒鐘收到來自同一客戶端的第16個請求,則客戶端需要被列入黑名單,並從此時開始處於禁止狀態 - 直至其令牌過期。 令牌到期時間限制是從令牌創建時間開始的15個薄荷糖,這將在節點會話中維護。

如何做到這一點,請幫助我,我用下面的方法

var rateLimit = require('express-rate-limit'); 
var limiter = rateLimit({/* config */}); 
app.use('/users', limiter); 

我在這裏使用默認的配置值的任何一個。如果我發送重複請求,那麼它說429-太多請求。幾秒鐘後,它的工作沒有錯誤響應。在這裏,我需要阻止來自同一地點的請求15分鐘,15分鐘後令牌將過期。然後我想繼續這個過程,創建一個新的令牌。

回答

0

你需要決定兩件事情:

  1. 時間限制
  2. 有多少請求要允許在該期限

如果你想限制請求最多15每10秒,你會像這樣配置express-rate-limit

var rateLimit = require('express-rate-limit'); 
var limiter = rateLimit({ 
     windowMs: 10 * 1000, // 10 seconds 
     max: 15, 
}); 
app.use('/users', limiter); 
+0

感謝您的回答。 令牌到期時間限制是從令牌創建時起的15個薄荷糖,這將在會話中保持。 我的條件只允許來自同一客戶端的10秒內發出15次請求。 一旦您從第11秒鐘收到來自同一客戶端的第16個請求,則客戶端需要被列入黑名單,並從此時開始處於禁止狀態 - 直到其令牌過期 – raj

+0

謝謝,請參閱上述更新的答案。 – duncanhall

+0

我想爲此做什麼 我的條件只允許來自同一個客戶端的10個請求中的15個請求。一旦您在第11秒內從同一客戶端收到第16個請求,則需要將客戶端列入黑名單,並從此時開始處於禁止狀態 - 直至其令牌過期 令牌過期時間限制爲從令牌創建時起15個薄荷糖,這將在會議中保持。 – raj