2014-02-13 27 views
0

我有一种方法,我只想让管理员能够调用,但我也希望它在Meteor.onStartup()中运行。我怎样才能做到这一点?流星方法的安全性,同时允许服务器也运行代码

我已经添加了“isAdmin”:对用户文档是管理员,并添加了一个if语句到方法的开始,只有管理员应该能够调用以检查该用户确实是管理员。 这很好,除了我也想在onStartup中调用这个方法,但是因为在onStartup代码运行时没有用户,所以不能调用该方法。我怎样才能解决这个问题?

感谢

回答

2

重构您共享的代码(即无论是在方法和启动功能运行)到一个单独的功能,并且在这两个地方使用它:

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

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

Meteor.startup(sharedFunction); 
0

你可以重构将您的通用代码添加到函数中,并在if语句中从您的方法中调用它,以检查用户或

您可以使用http://docs.meteor.com/#method_setUserId暂时将admin用户设置为登录状态,然后在呼叫完成后退出。

为此目的,您可以创建一个名为系统/维护的帐户等。

相关问题