Meteor.js:DDPRateLimiter限制是全局的,而不是每个连接

时间:2016-08-24 10:17:46

标签: meteor ddp

您好我使用DDPRateLimiter限制meteor.js中的一些方法,我发现它限制了所有人的方法调用,而不仅仅是那个连接!例如,对于此规则:

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

在一个浏览器中更新,然后在另一个浏览器中更新时会导致速率限制错误。文档有点不清楚,默认行为根本不直观。我如何对每位用户进行限价?

1 个答案:

答案 0 :(得分:2)

我同意,文档需要一些工作。为了使您的工作符合要求(仅限登录用户),您需要以下内容:

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

这将导致updateUsernameRule规则仅与用户userId(登录用户)匹配。所有其他未登录的用户将完全跳过此规则,并能够根据需要发出任意数量的请求。