是否可以确定服务器是否调用了Meteor方法
Is it possible to determine if a Meteor method was called by the server
我有一些Meteor方法,我想保护它们的安全,这样只有特定的用户才能从客户端调用它们。然而,服务器也使用这些方法。我收到了这个.userid中的userid,这样我就可以检查用户是否登录,以及是否允许他们拨打电话,没问题。但是,当我还需要从服务器端调用该方法时,我如何确定它是一个服务器调用,以便允许该方法执行。检查是否没有this.userid以确定其服务器调用是否允许未经身份验证的用户也调用该方法。我正在寻找一种方法来确定该方法是否由服务器调用,这样我就可以允许它,并且仍然可以防止未经身份验证的用户调用该方法。
Meteor.methods({
makeCoffee: function (time) {
check(time, Number);
if(calledByServer || (Meteor.user() && Meteor.user().profile.usertype === 'coffee dude')){
//Makin' Coffee
}
else
throw new Meteor.Error(404, "Can't find my pants");
return "Coffee will be made at " + time;
}
this.connection
将是服务器端方法内的null
,如果该方法不是从客户端调用的
请参阅this.connection文档。
看起来Meteor.call现在也可以从服务器端调用:http://docs.meteor.com/#meteor_call
原始答案:
这样做:
makeCoffee = function (time) { //code here }
Meteor.methods({
makeCoffeeMethod: function (time) {
if (calledByAllowedUser())
return makeCoffee(time);
else
throw new Meteor.Error(403, 'Forbidden');
}
});
现在您可以绕过身份验证在服务器上调用它。
相关文章:
- Meteor中是否有全局渲染函数
- 是否可以限制“;每个在“;在Meteor中
- 是否应命名Meteor发布函数
- 如何使用Meteor.com检测JavaScript是否被禁用
- meteor 遍历一组会话以检查值是否已更改
- 在Meteor中使用#each,检查是否'最后'已到达集合中的元素
- 是否可以在Meteor空格键模板中切换采集焦点
- Meteor后端代码在客户端是否始终可用
- 是否可以确定服务器是否调用了Meteor方法
- 是否有人在Meteor中成功创建了密钥绑定
- Meteor正在检测集合中是否存在字段
- Meteor-如何检查图像是否存在(服务器端)
- 如何在Meteor的自定义验证简单模式中检查布尔值是否为真
- 在Meteor.js中单击Button时检查是否已登录
- 是否需要Import来运行Meteor应用?
- Mongodb /meteor收集检查子文档字段是否存在,当字段是一个变量
- 在Meteor中检查数组是否有两个数字的最佳方法
- 检查Meteor.users订阅是否已填充
- 在Meteor中使用ES6导入和导出是否为时过早
- 如何知道插入Meteor.JS的MongoDB集合是否成功(在模板内)