您好我使用DDPRateLimiter限制meteor.js中的一些方法,我发现它限制了所有人的方法调用,而不仅仅是那个连接!例如,对于此规则:
var updateUsernameRule = {
type: 'method',
name: 'updateUsername'
};
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000);
在一个浏览器中更新,然后在另一个浏览器中更新时会导致速率限制错误。文档有点不清楚,默认行为根本不直观。我如何对每位用户进行限价?
答案 0 :(得分:2)
我同意,文档需要一些工作。为了使您的工作符合要求(仅限登录用户),您需要以下内容:
const updateUsernameRule = {
type: 'method',
name: 'updateUsername',
userId(userId) {
if (userId) {
return true;
}
}
};
DDPRateLimiter.addRule(updateUsernameRule, 1, 30000);
这将导致updateUsernameRule
规则仅与用户userId
(登录用户)匹配。所有其他未登录的用户将完全跳过此规则,并能够根据需要发出任意数量的请求。