Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections 为什么要使用Collection.allow而不仅仅是Meteor.methods和Meteor.call来调用这些方法?_Collections_Meteor - Fatal编程技术网

Collections 为什么要使用Collection.allow而不仅仅是Meteor.methods和Meteor.call来调用这些方法?

Collections 为什么要使用Collection.allow而不仅仅是Meteor.methods和Meteor.call来调用这些方法?,collections,meteor,Collections,Meteor,运行基本的Meteor示例() 我想知道为什么您需要使用Collection.allow来指定哪些插入、更新等。。。通过,而不是仅仅使用Meteor.methods,然后从客户端发出Meteor.call “方法”方式似乎总是更好,因为它更灵活(即自定义函数)您误解了收集。允许用途:它用于限制客户端代码可以对收集执行的操作。这些限制不适用于服务器端。实际上,您应该在Meteor.methods中对集合执行写操作,然后从客户端代码调用它们 Collection.allow用于防止最终用户和潜在的黑

运行基本的Meteor示例()

我想知道为什么您需要使用Collection.allow来指定哪些插入、更新等。。。通过,而不是仅仅使用Meteor.methods,然后从客户端发出Meteor.call


“方法”方式似乎总是更好,因为它更灵活(即自定义函数)

您误解了收集。允许用途:它用于限制客户端代码可以对收集执行的操作。这些限制不适用于服务器端。实际上,您应该在Meteor.methods中对集合执行写操作,然后从客户端代码调用它们

Collection.allow用于防止最终用户和潜在的黑客能够利用您的数据做任何有损其品味的事情。永远不要忘记,您的客户端代码可以进行调整

在您提到的示例中,假设您的Party结构中有另一个字段。您可能不希望我能够更新此字段。如果没有对Parties中的字段名进行“update”回调测试,我将能够在该字段中插入更改


明白了吗?

允许和拒绝接口对于您想要的大多数访问控制来说都足够灵活。如果可以使用内置代码,那么最终会得到更干净、更易懂、更可读的代码。它还更像流星,因为它保留了流星的“无处不在的数据库”抽象,即能够直接在客户机上执行数据库操作

可以拒绝集合上的所有操作,然后仅通过方法公开对集合的访问。但很有可能最终会重新实现CRUD接口,并且可能会重新实现allow和deny函数


如果我发现难以通过allow和deny接口表达所需的访问控制,我会尝试只使用Meteor.methods。例如,有时您需要同时更新两个相关集合,并且验证需要在确定操作是否应继续之前检查两个集合的建议更改。使用Meteor.method可以更干净。

如果我没有设置任何“允许”,那么所有数据库访问都会被拒绝,对吗?那么重点是什么呢?由您决定是否允许从您的客户端代码对集合进行直接插入/更新/删除调用。如果您不想允许,请不要设置“允许”。但是,如果您希望能够对集合执行直接操作,则应设置它并对回调中获得的数据进行三重检查。因此,为了安全和一致,我可以通过方法运行所有操作并验证那里的数据,而无需允许。是的,您可以。在这种情况下,请确保禁用不安全模式(请参阅文档的最后一段,您可以通过方法执行此操作,但允许使用此方法可以使客户端代码更容易,而且它还可以处理验证,因为一个验证规则处理所有客户端请求,因此维护起来也更容易。在一个方法中,您必须为每个调用自定义此规则。因此基本上,
“免费简单crud”
=
收集。允许”
“稍微复杂一点的模型/授权逻辑开始悄悄进入”
=
Meteor.method