Meteor方法的安全性,同时允许服务器运行代码

时间:2014-02-13 19:13:35

标签: meteor

我有一个方法,我只希望管理员能够调用,但我也希望它在Meteor.onStartup()中运行。我怎么能这样做?

我添加了“isAdmin”:对于作为管理员的用户文档是true,并在方法的开头添加了if语句,只有管理员才能调用以检查该用户是否确实是管理员。 这很好用,除了我想在onStartup中调用这个方法,但由于在运行onStartup代码时没有用户,因此无法调用该方法。我怎么能绕过这个?

由于

2 个答案:

答案 0 :(得分:2)

将您的共享代码(在方法和启动函数中运行)重构为一个单独的函数,并在两个地方使用它:

var sharedFunction = function() {
  // do something
};

Meteor.methods({
  "foo": function() {
    if (Meteor.user().isAdmin) {
      sharedFunction();
    }
  }
}

Meteor.startup(sharedFunction);

答案 1 :(得分:0)

您可以将公共代码重构为函数,并在检查用户的if语句中从您的方法中调用它,或者

您可以使用http://docs.meteor.com/#method_setUserId暂时将管理员用户设置为已登录,然后在通话结束后退出。

出于此目的,您可以创建一个名为system / maintenance等的帐户。