我怎么知道一个方法是服务器端还是客户端(来自服务器)?

时间:2015-06-02 14:52:38

标签: meteor

在我的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之类的东西吗?

2 个答案:

答案 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.isSimulationMeteor.isClient来检测客户端存根的执行情况。

您可以否定这些表达式来检测服务器端环境或使用Meteor.isServer