Meteor JS-允许/拒绝规则
在示例应用程序“parties”中,有一组parties集合的允许/拒绝规则。Meteor JS-允许/拒绝规则,meteor,Meteor,在示例应用程序“parties”中,有一组parties集合的允许/拒绝规则。 insert的规则如下所示: Parties.allow({ insert: function (userId, party) { return false; // no cowboy inserts -- use createParty method },... 同时,方法createParty实现Parties.insert({….}),它不受应用于Parties集合的规则的影响 ..... r
insert
的规则如下所示:
Parties.allow({
insert: function (userId, party) {
return false; // no cowboy inserts -- use createParty method
},...
同时,方法createParty实现Parties.insert({….}),它不受应用于Parties集合的规则的影响
.....
return Parties.insert({
owner: this.userId,
x: options.x,
y: options.y,
title: options.title,
description: options.description,
public: !! options.public,
invited: [],
rsvps: []
});
.....
有人能解释为什么createParty方法不受规则的影响吗
谢谢。createParty位于
Meteor.methods
中,通过从客户端调用Meteor.call('createParties')
在服务器和客户端运行。在客户端上,它不会插入任何数据,但在服务器上运行的方法将插入参与方
Meteors
allow
和deny
规则直接控制来自客户端的内容,不适用于服务器端运行的任何内容。迅速尝试证明Akshat关于Meteor的陈述。方法
仅在服务器上运行。这似乎是真的:不总是这样。如果某个方法对客户端可用(例如,未包装在Meteor.isServer
中),则客户端和服务器都将执行该方法调用。您只需在createParty
方法的顶部添加一个控制台。log
即可看到这一点。更新了答案以包括这一点,我不知道它也在客户端上运行,然后我意识到我总是在Meteor中使用它们。isServer Blocks进一步说明:Meteor只需要一个允许
就可以说是。如果您有多个允许
选项,则并非所有选项都有效。如果要确保拒绝恶意插入,请改用deny
。另外,如果使用deny
,则必须至少有一个allow
(即使是return true;
)。