如何在 Meteor 中保证动态订阅的安全?

2024-02-06

这个问题建立在上一个问题的基础上(参见here https://stackoverflow.com/questions/16252077/how-to-deal-with-dynamic-subscriptions-in-meteor/).

动态订阅是使用以下代码设置的(对上一个问题稍作修改):

Meteor.startup(function(){
  Meteor.subscribe('parents');

  Deps.autorun(function() {
    parent = Parents.findOne({ _id: Session.get('parentId') });
    if (!parent) return;
    Meteor.subscribe('kids', parent);
  });
});

问题是服务器端必须信任parent客户端传递的对象。理想情况下,人们只想通过_id父对象的像这样:

  Deps.autorun(function() {
    parentId = Session.get('parentId');
    if (!parentId) return;
    Meteor.subscribe('kids', parentId);
  });

但是,在这种情况下,动态订阅行为会中断(例如,kids当父级的子级数组更新时,集合不会在客户端上更新)。

Why is Session.get('parentId')反应性低于Parents.findOne({ _id: Session.get('parentId') }),或与此有关Meteor.subscribe('kids', parent) vs. Meteor.subscribe('kids', parentId)?

正确编码的最佳模式是什么?


看起来您想要做的事情如下:

Deps.autorun(function() {
    parent = Parents.findOne({ _id: Session.get('parentId') }, {fields: {_id: 1}});
    if (!parent) return;
    Meteor.subscribe('kids', parent._id);
});

然而,这仍然不完全安全。它只是检查Parents集合以确保引用的 Session 变量在尝试订阅之前存在 - 这取决于parents订阅。如果您希望它得到妥善保护,您将不希望派任何父母过来parent订阅客户端(如果客户端不应该看到它们)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Meteor 中保证动态订阅的安全? 的相关文章

  • Meteor 文件上传不工作

    我已将包 cfs standard packages 和 cfs filesystem 添加到我的 Meteor 项目中 我想使用带有此输入的表单为我的博客上传精选图像 div class form group div
  • 让 React 在表单输入字段下显示单独的错误消息

    我正在提交一个返回一系列错误的表单 但我无法弄清楚如何让每个单独的错误出现在正确的输入字段下 现在 所有错误都会打印在每个输入字段下 我在用着react bootstrap 任何帮助 将不胜感激 getValidationState var
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 如何获取模板的所有实例?

    我知道我可以通过这样做获得一个模板实例Blaze getView node 但我怎样才能找到所有实例Template foo 如果我们借行走DOM http www javascriptcookbook com article Traver
  • Meteor 中的触摸事件

    我开始使用 Meteor 做的第一件事是开始为手机 平板电脑编写基于触摸的 Web 应用程序 以下是重现问题的方法 第一步 创建一个空白项目 meteor create touch example cd touch example mete
  • 使用 Meteor 进行就地编辑:无法读取 null 的属性“parentNode”

    我已设置就地编辑network模型 有两个输入字段 分别是title和description模型的 当用户单击标题时 它会切换 h2 的标签 h2
  • Meteor 用户属性

    我希望能够在 Meteor 身份验证系统中将用户标记为 管理员 并允许该用户执行特殊操作 以及显示一些如果他们不是管理员则不会显示的 gui 元素 我已经尝试在用户对象上设置一个 admin 属性 这在服务器端可以正常工作 对于管理操作的
  • 带有 mrt 的流星 - 铁:路由器:没有这样的包

    我在学meteor 0 8 3并尝试使用一些基本的路由设置铁路由器 https github com EventedMind iron router My smart json包含 packages iron router git http
  • Mongo按动态字段排序

    所以我传入了一个动态变量 它是我想要排序的字段的名称 假设下面的 sortVariable 可能等于 price createdAt name 等 这不起作用 我该怎么做 function findStuff sortVariable va
  • meteorjs 中的 imagemagick (在流星路由器和光纤的帮助下)

    我无法在meteorjs 中使用imagemagick 我正在开发一个小型 svg gt png 转换器 其中包含一个 REST API 来提供转换后的图像 我用meteor router实现了其余的api imagemagick 转换有效
  • MongoDB:如果使用 $addToSet 或 $push,是否应该预先分配文档?

    我一直在研究 MongoDB 我知道强烈建议在插入时完全构建 预分配 文档结构 这样将来对该文档的更改不需要移动该文档磁盘周围 这在使用 addToSet 或 push 时适用吗 例如 假设我有以下文档 id rsMH4GxtduZZfxQ
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 4 级订阅嵌套在流星中

    我正在使用流星 这是我的架构 每个都是一个单独的集合 课程有很多讲座 讲座有很多问题 问题有很多答案 我想要一页可以显示给定课程的讲座 问题和答案 我可以毫无问题地显示课程的讲座 但在显示更多嵌套项目时遇到问题 我理想地希望拥有 讲座有 c
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致
  • mongodb 获取最后插入的文档

    此 Meteor 代码尝试查找集合中的最后一个文档 find userId this userId sort createdAt 1 limit 1 但由于所有文档都是按时间顺序排列的 我想删除createdAt字段 所以一旦被 删除 是否
  • 如何在流星运行时编译新模板?

    如何使用 Handlebars js 在流星中运行时编译新模板 var source
  • 使用 Typeahead Bloodhound 的 Meteor 集合,最好不要制作我自己的 API

    我想构建一个类似于 StackOverflow 中的标签输入 我正在尝试使用 Meteor 集合作为远程或预取数据提前输入 https twitter github io typeahead js examples 寻血猎犬 https g
  • 带有流星的网站图标?

    我正在尝试将网站图标加载到我的 Meteor 项目中 但无法让它工作 我尝试使用this https stackoverflow com questions 20054788 how to load a favicon with meteo
  • 使用 DataTables (Meteor Tabular) 在新行中绘制数组的每个元素

    我正在使用流星表格包 https atmospherejs com aldeed tabular aldeed tabular它实现了数据表 http datatables net 我正在尝试从 Mongo 集合创建一个表 该集合有一份以下
  • 如何“转换”通过 Meteor.publish 返回的数据?

    流星收藏有一个转换 http docs meteor com meteor collection允许将行为附加到从 mongo 返回的对象的能力 我们希望关闭自动发布 以便客户端无法访问数据库集合 但我们仍然需要转换功能 我们使用更明确的

随机推荐