CouchDB验证和安全文档

时间:2015-02-15 17:03:44

标签: javascript validation couchdb couchdb-futon

我对安全文件(下图)

之间的区别感到困惑

enter image description here

AND位于设计文档中的 validate_doc_update 函数(见下文)之间。

  function(newDoc, oldDoc, usersCtx){

     //validate code goes here

  }

哪一个用于什么点,每个用途的目的是什么?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

安全文档存储状态(数据),而验证文档更新功能存储行为(逻辑)。它们共同构成了O​​O意义上的一个对象。

validate_doc_update函数的完整签名实际上是

function(newDoc, oldDoc, userCtx, secObj)

其中secObj是安全文档。因此,如果您愿意,可以将validate_doc_update解释为secObj方法。目标是通过不必在验证代码中对数据进行硬编码来保持代码整洁。

答案 1 :(得分:0)

这些是适用于不同范围的不同概念......

安全文件 这适用于全局数据库。它控制哪些用户名具有管理员角色以及哪些用户具有访问权如果数据库不是公共的,则只有在本文档中命名的用户才能访问(读取或写入)数据库。请注意,身份验证在其他地方处理 - 此文档仅处理经过身份验证的用户名。

即使没有任何验证功能,安全文档也很重要,因为它控制了数据库级别的访问。

验证功能 设计文档的验证功能允许设计者限制对文档的更改。根据数据库中所有设计文档中所有验证函数的结果,PUT / POST将成功或失败。 但是,验证功能可用的数据是有限的 - 除了正在更新的文档和安全文档之外,它不能引用任何其他文档。

使用验证功能,设计人员可以限制字段的值,控制哪些字段可以更改,以及根据当前用户是否为管理员来改变权限。但是,无法检查另一个文档的查找列表中的新值,或者对另一个文档ID的引用是否有效。

可以在没有安全文档的公共数据库中使用验证函数 - 因此这两个概念可以一起工作但不需要另一个。