簡體   English   中英

如何在一段時間內將請求數限制為Action

[英]How to limit requests number to an Action in period of time

如何將傳入請求限制為Action,例如我不希望用戶反復將數據發布到Action。 有沒有辦法對行動申請時限?

您通常無法限制傳入請求 - 它們來自您控制之外的計算機。 您可以做的是拒絕請求(即503響應),或者如果您以某種方式控制客戶端,您可以限制合法客戶端的請求數量。

為了能夠合理地拒絕傳入請求,您需要了解有關每個特定用戶的先前請求的一些信息(即存儲在cookie中的最后請求時間/索引,或存儲在會話狀態中的某些信息)。 有了這些信息,您應該能夠編寫將檢查條件並拒絕請求的操作過濾器。

請注意,非合法用戶可以輕松繞過所有不依賴於服務器端存儲的限制(如會話狀態)。 如果你不能自動化用戶(即通過用戶名)限制現有會話的數量也可能是問題...

這是我會做的簡單方法。

為每個用戶創建一個Guid,以及上一個發布日期時間,將其推送到用戶,就像在cookie中一樣。 每次用戶發布內容時,請閱讀cookie。 檢查日期時間,如果用戶在用戶可以再次發布之前發布了某些內容,則返回響應,說“放慢老虎!” 否則繼續。 您可以自己定義此Timespan。

容易沒?

另一方面,如果您只想讓10個用戶調用您的操作,則需要一個原子計數器。 Interlocked是你的朋友。 您可以在方法的開頭遞增,然后在結束時遞減。

哦。 信號量怎么樣,從概念上講適合你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM