着信リクエストをアクションに制限する方法。たとえば、ユーザーがアクションにデータを繰り返し投稿したくない。アクションに時間制限を適用する方法はありますか?
2 に答える
通常、着信要求を制限することはできません。それらは、制御できないマシンから送信されます。実行できるのは、要求を拒否する(つまり、503応答を使用する)か、何らかの方法でクライアントを制御する場合は、正当なクライアントが行う要求の数を制限することです。
着信リクエストを合理的に拒否できるようにするには、特定のユーザーごとの以前のリクエストに関する情報(つまり、Cookieに保存された最後のリクエスト時間/インデックス、またはセッション状態に保存された情報)を知る必要があります。このような情報を使用すると、状態をチェックしてリクエストを拒否するアクションフィルターを作成できるはずです。
非正規ユーザーは、サーバー側のストレージに依存しないすべての制限(セッション状態など)を簡単に回避できることに注意してください。ユーザーを(つまりユーザー名で)自動化できない場合は、既存のセッションの数を制限することも問題になる可能性があります...
これが私がする簡単な方法です。
ユーザーごとにGuidを作成し、最後の投稿日時とともに、Cookieのようにユーザーにプッシュします。ユーザーが何かを投稿するたびに、Cookieを読んでください。日時を確認し、ユーザーが再度投稿する前にユーザーが何かを投稿した場合は、「虎の速度を落とします」という応答を返します。それ以外の場合は続行します。このタイムスパンは自分で定義できます。
簡単じゃない?
一方、たとえば10人のユーザーだけがアクションを呼び出す場合は、アトミックカウンターが必要です。Interlocked
あなたの友だちです。メソッドの最初でインクリメントし、最後でデクリメントできます。
おー。セマフォはどうですか、概念的にはあなたの問題に適合します。