2016-08-24 5 views
3

ごとに、グローバルでこんにちは率DDPRateLimiterとmeteor.jsでいくつかのメソッドを制限し、私が見つけたことは、それは誰もいないだけで、その接続のためのメソッド呼び出しを制限していることですしています!このルールの例:Meteor.js:DDPRateLimiterの制限はありません接続

var updateUsernameRule = { 
    type: 'method', 
    name: 'updateUsername' 
}; 
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000); 

ブラウザで更新し、別のブラウザで更新するとレート制限エラーが発生します。ドキュメントはそのことについて少し不明であり、デフォルトの動作は直感的ではありません。ユーザーあたりの料金制限はどのようにしたらよいですか?私は同意する

答えて

2

は、ドキュメントは、仕事のビットを必要としています。

const updateUsernameRule = { 
    type: 'method', 
    name: 'updateUsername', 
    userId(userId) { 
    if (userId) { 
     return true; 
    } 
    } 
}; 
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000); 

はこれが唯一のセットuserIdで、ユーザーのために一致させることにupdateUsernameRuleルールを引き起こします(ログイン:(のみログインしているユーザーによって制限)あなたのケースで、この作業を行うには、次のようなものをお勧めしますユーザー)。ログインしていないユーザーはすべてこのルールを完全にスキップし、必要なだけ多くのリクエストを行うことができます。

+0

あなたのソリューションは、このために理にかなっているが、私は、送信されたメッセージの数を制限するために何をしたい場合は?私が10のメソッド呼び出しのレート制限を1秒行うと、それは単一のユーザーにとって妥当です。しかし、一度に100人のユーザーがログインすると、おそらく限界に達するでしょう。私はちょうどレート制限を検討し始めた、私は非常にユーザーによってそれを行うことは簡単ではない驚いている。私の答えで – gkrizek

+0

レート制限ルールは、ユーザーごとにあるので、30秒以内に、ユーザーあたり1つの要求。ユーザーあたり10個のメソッド呼び出しの制限を設定した場合、定義された間隔で100人のメソッド呼び出しがそれぞれ10回許可されます。 – hwillson

+1

ありがとうございます。あなたの答えは私にとってはちょっと混乱していると思います。それは各呼び出しのuserIdをチェックしていますか?または、ユーザーがIDを持っているかどうかを確認するだけですか?基本的には、ログインしているすべてのユーザーに30秒ごとに1件のリクエストを制限するか、または30秒ごとに1人のユーザーごとにリクエストを制限していますか? – gkrizek

関連する問題