Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CouchDB验证和安全文档_Javascript_Validation_Couchdb_Couchdb Futon - Fatal编程技术网

Javascript CouchDB验证和安全文档

Javascript CouchDB验证和安全文档,javascript,validation,couchdb,couchdb-futon,Javascript,Validation,Couchdb,Couchdb Futon,我不知道安全文档之间的区别是什么(下图) 以及位于设计文档中的验证文档更新功能(见下文)之间 function(newDoc, oldDoc, usersCtx){ //validate code goes here } 在什么时候使用哪一个,以及每一个的目的是什么? 提前感谢。安全文档存储状态(数据),而验证文档更新功能存储行为(逻辑)。它们一起构成OO意义上的对象 validate\u doc\u update函数的完整签名实际上是 function(newDoc,

我不知道安全文档之间的区别是什么(下图)

以及位于设计文档中的验证文档更新功能(见下文)之间

  function(newDoc, oldDoc, usersCtx){

     //validate code goes here

  }
在什么时候使用哪一个,以及每一个的目的是什么?


提前感谢。

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

validate\u doc\u update
函数的完整签名实际上是

function(newDoc, oldDoc, userCtx, secObj)

其中,
secObj
是安全文档。因此,如果愿意,您可以将
validate\u doc\u update
解释为
secObj
的一种方法。目标是通过不必在验证代码中硬编码数据来保持代码整洁。

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

安全文档 这将全局应用于数据库。它控制哪些用户名具有管理员角色,哪些具有访问权限。如果数据库不是公共数据库,则只有本文档中指定的用户才能访问(读或写)数据库。请注意,身份验证是在别处处理的-本文档仅处理经过身份验证的用户名

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

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

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


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

非常感谢您的回复。我从研究和测试中了解到,“安全文档”仅允许对安全文档中添加的人员进行读写访问。但是,如果您想进一步限制谁可以“写入/更新”数据库中的文档,您可以设置“验证文档更新”功能,该功能将限制未经授权的用户(未经验证授权的用户)进行任何更改。是这样吗?还是我完全弄错了?是的,
validate\u doc\u update
为您提供了更多的控制:如果需要,您可以限制对单个字段的访问!