嗨,我正在使用 DDPRateLimiter 限制meteor.js 中的一些方法的速率,我发现它限制了每个人的方法调用,而不仅仅是那个连接!例如对于这个规则:
var updateUsernameRule = {
type: 'method',
name: 'updateUsername'
};
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000);
Run Code Online (Sandbox Code Playgroud)
在一个浏览器中更新,然后在另一个浏览器中更新时会导致速率限制错误。文档对此有点不清楚,默认行为根本不直观。我如何限制每个用户的速率?
我同意,文档需要做一些工作。为了在您的情况下完成这项工作(仅限登录用户),您需要如下内容:
const updateUsernameRule = {
type: 'method',
name: 'updateUsername',
userId(userId) {
if (userId) {
return true;
}
}
};
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000);
Run Code Online (Sandbox Code Playgroud)
这将导致updateUsernameRule规则仅与具有集合userId的用户(登录用户)匹配。所有其他未登录的用户将完全跳过此规则,并能够根据需要进行任意数量的请求。
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |