在我的Meteor应用程序中,我在服务器上定义了一个方法,如下所示:
/* global Meteor */
Meteor.methods({
notifyRequestRejected: function (username, reason) {
if (!Meteor.userId()) {
throw new Meteor.Error(403, 'Access denied');
}
return Meteor.http.post('…');
}
});
由于我只希望经过身份验证的用户和我的服务器端(可信)代码能够调用该方法,如何检查该方法是被称为服务器端还是客户端?方法有this.calledFromServer
之类的东西吗?
答案 0 :(得分:3)
通过检查this.connection
属性,可以检查方法调用是在服务器端还是在客户端。
如果它不为null,则表示该方法是从客户端调用的。
因此,要确保调用者是经过身份验证的用户或某些服务器端代码,请使用:
Meteor.methods({
notifyRequestRejected: function (username, reason) {
if (!Meteor.userId() && this.connection) {
throw new Meteor.Error(403, 'Access denied');
}
// etc.
}
});
答案 1 :(得分:0)
您可以使用this.isSimulation
或Meteor.isClient
来检测客户端存根的执行情况。
您可以否定这些表达式来检测服务器端环境或使用Meteor.isServer
。