使用 Autoform 插入并删除不安全

Posted

技术标签:

【中文标题】使用 Autoform 插入并删除不安全【英文标题】:Insert using Autoform with insecure removed 【发布时间】:2015-02-01 14:26:37 【问题描述】:

我一直在我的 Meteor 项目中使用 Collection2 和 Autoform,这让事情变得容易多了!

但是,当我删除不安全时,它不再插入(自动提交按钮)。这是我预料到的!

但是,我进行了搜索,但找不到使其正常工作的标准方法?我在 lib 文件夹中定义了一个模式,并且我的 Autoform 作为模板中的快速表单。我知道我需要允许客户端插入(我不想这样做)或将其传输到服务器端(可能带有方法?)

任何建议将不胜感激!我正在寻找实现它的标准方法。

【问题讨论】:

是的,我已经附加了 Schema,但由于某种原因它在不安全的情况下无法正常工作。作者在这里提到,如果关闭不安全,您必须定义自己的允许/拒绝规则:github.com/aldeed/meteor-autoform/issues/380 【参考方案1】:

经过大量挖掘找到了我自己的答案。为插入、更新和删除创建了允许规则:

Posts = new Mongo.Collection('posts');

//SECURITY - Allow Callbacks for posting

Posts.allow(
  insert: function(userId, doc) 
    // only allow posting if you are logged in
    return !! userId; 
  ,
  update: function(userId, doc) 
    // only allow updating if you are logged in
    return !! userId; 
  ,
  remove: function(userID, doc) 
    //only allow deleting if you are owner
    return doc.submittedById === Meteor.userId();
  
);

//Schema then defined as usual

请注意,submitById 是我的集合中保留 userId 的字段。如果您将其称为不同的名称,请更改它!

希望这对遇到类似问题的人有所帮助。

【讨论】:

谢谢,这对我有帮助!另外,我将此允许/拒绝代码放在共享(客户端/服务器)文件夹中。

以上是关于使用 Autoform 插入并删除不安全的主要内容,如果未能解决你的问题,请参考以下文章

Meteor 覆盖包中元素的点击事件

LinkedBlockingQueue 的插入和删除方法是线程安全的吗?

Oracle Merge:当不匹配时删除并插入

应用程序不合规并被删除:安全漏洞:不安全的主机名验证

TableView:是不是可以在不重新加载 tableview 或部分的情况下删除现有行并插入新行?

如何在数据结构中同步插入/删除元素,功能方式?