如何在服务器端拒绝收集 insert/update
How to deny collection insert/update in the server side
我有一个 Meteor
应用程序 (A) 连接到一些生产远程集合(由另一个应用程序使用 B) 而我只想 A 从 B 的集合中读取数据并且 不修改 B 的集合数据 (即使修改发生在服务器中- B).
的一侧
我怎样才能在 A 中做到这一点?
您可以完全控制您的 Meteor 应用程序服务器代码在数据库中可以执行的操作。
为确保您的应用 A 服务器代码无法写入数据库,只需 永远不要 使用任何集合 insert
、update
或 upsert
方法。
Meteor 的特殊之处在于它还可以允许客户端启动数据库修改:只需确保删除 insecure
包并且 从不 使用集合 allow
服务器代码中的方法。
现在,针对您的案例的非常简单、防弹和标准实践解决方案就是为您的应用程序 A 创建一个不同的数据库用户,只有读取权限,如@NeilLunn 所解释的那样。这个不同的数据库用户凭据然后是您传递给应用程序 A 的 MONGO_URL
变量的一部分,因此这是将您的应用程序 A 连接到与应用程序 B 共有的远程数据库的唯一方法。
我有一个 Meteor
应用程序 (A) 连接到一些生产远程集合(由另一个应用程序使用 B) 而我只想 A 从 B 的集合中读取数据并且 不修改 B 的集合数据 (即使修改发生在服务器中- B).
的一侧
我怎样才能在 A 中做到这一点?
您可以完全控制您的 Meteor 应用程序服务器代码在数据库中可以执行的操作。
为确保您的应用 A 服务器代码无法写入数据库,只需 永远不要 使用任何集合 insert
、update
或 upsert
方法。
Meteor 的特殊之处在于它还可以允许客户端启动数据库修改:只需确保删除 insecure
包并且 从不 使用集合 allow
服务器代码中的方法。
现在,针对您的案例的非常简单、防弹和标准实践解决方案就是为您的应用程序 A 创建一个不同的数据库用户,只有读取权限,如@NeilLunn 所解释的那样。这个不同的数据库用户凭据然后是您传递给应用程序 A 的 MONGO_URL
变量的一部分,因此这是将您的应用程序 A 连接到与应用程序 B 共有的远程数据库的唯一方法。