我正在开发用户组系统。每个组都有几个功能,我想让与组集合的交互尽可能安全和简单,因为它仍处于早期阶段。
现在,我的网站中有一个小组部分,我在其中使用了几个嵌套页面。该部分的目的是允许用户进入一个组,如果该组是私有的,则请求成员资格,浏览一个组对象等。
例如,在我的群组部分,我可以在收益中加载“查看所有群组”页面、“创建新群组”页面或“仅查看我的群组”(我所属的群组)或“查看群组” " 获取组详细信息。
我的第一种方法是为每个子页面创建一个controller.js
文件,该文件调用一个为子页面需求量身定制的订阅。例如,我有一个用于“查看所有组”子页面的“all_group”发布/订阅,以及一个用于“仅查看我的组”子页面的“my_groups”。
但这变得非常混乱。此外,我在两个文件夹中声明了我的“组”集合,因此我不确定客户可用数据的来源。
现在我解释了情况,这里是我的问题:
- 当我
console.table(Groups.find().fetch());
在客户端上进行操作时,我看到了不应该存在的字段(即我当前的出版物或任何其他出版物不返回)。那是因为我在客户端声明了“组”集合吗?如何解决? - 我是否应该摆脱所有这些出版物,只创建一个包含允许客户查看的所有内容的出版物?然后我会从组部分页面控制器订阅它并使用一组数据。
- 我是否应该简单地使用允许/拒绝规则阻止来自客户端的任何插入/更新/删除,并仅使用方法进行这些操作?
- 将我的方法放在
both
文件夹中是否安全/建议这样我就不会失去延迟补偿功能?
编辑
好吧,我吓坏了,因为我在客户端拥有所有收集数据,但这只是发布中的一个错误查询(我同时使用field:1
和field:0
预测)。剩下两个问题:
- 如果我使用方法,我假设我不必否认本机驱动程序中的所有内容,我只需要比方法允许的更严格,对吧?
- 如果我将我的方法放在两个文件夹中,它将在客户端和服务器上执行,因此在“客户端离线”上下文中,即使客户端弄乱了我的方法,如果客户端结果不同,服务器也应该回滚更改比他的(假设无法使用允许拒绝规则完成更改)?即使使用这些方法,我也会有延迟补偿?