如何防止用户访问/修改客户端模型/集合?
答案 0 :(得分:7)
使用allow
和deny
来定义允许每个客户端进行哪些数据库更改。
来自文档:
当客户端调用插入,更新或删除集合时,将在服务器上调用集合的allow和deny回调以确定是否应该允许写入。如果至少有一个允许回调允许写入,并且没有拒绝回调拒绝写入,则允许写入继续。
仅当客户端尝试直接写入数据库时才会运行这些检查,例如通过从事件处理程序内部调用update。服务器代码是受信任的,不受允许和拒绝限制。这包括使用Meteor.call调用的方法 - 它们应该进行自己的访问检查,而不是依赖于允许和拒绝。
您可以根据需要多次调用allow,每次调用都可以包含insert,update和remove函数的任意组合。如果他们认为应允许操作,则函数应返回true。否则他们应该返回false,或者什么也不返回(undefined)。在这种情况下,Meteor将继续搜索该集合的任何其他允许规则。
答案 1 :(得分:2)
正如马特所说,不再需要解决问题。但是作为标准,似乎需要删除autopublish包以保护系统。 Meteor文档涵盖了保护馆藏:http://docs.meteor.com/#meteor_collection