我对安全文件之间的区别感到困惑(下图)
AND 在设计文档中放置的validate_doc_update函数(见下文)之间。
function(newDoc, oldDoc, usersCtx){
//validate code goes here
}
哪一个在什么时候使用,每一个的目的是什么?
先感谢您。
我对安全文件之间的区别感到困惑(下图)
AND 在设计文档中放置的validate_doc_update函数(见下文)之间。
function(newDoc, oldDoc, usersCtx){
//validate code goes here
}
哪一个在什么时候使用,每一个的目的是什么?
先感谢您。
The security document stores the state (data) whereas the validate document update function stores the behavior (logic). Together, they form an object in the OO sense.
The complete signature of the validate_doc_update
function is actually
function(newDoc, oldDoc, userCtx, secObj)
where secObj
is the security document. So you can interpret validate_doc_update
as a method of secObj
if you prefer. The goal is to keep your code tidy by not having to hardcode data in the validation code.
这些是适用于不同范围的不同概念...
安全文档 这适用于全局数据库。它控制哪些用户名具有管理员角色以及哪些具有访问权限。如果数据库不是公开的,则只有本文档中指定的用户才能访问(读取或写入)数据库。请注意,身份验证在其他地方处理 - 本文档仅处理经过身份验证的用户名。
即使没有任何验证功能,安全文档也很重要,因为它控制了数据库级别的访问。
验证功能 设计文档的验证功能允许设计者限制对文档的更改。根据数据库中所有设计文档中所有验证函数的结果,PUT/POST 将成功或失败。然而,验证功能可用的数据是有限的——它不能引用任何其他文档,除了正在更新的文档和安全文档。
使用验证功能,设计者可以限制字段的值,控制可以更改的字段,并根据当前用户是否为管理员来改变权限。但是,无法检查新值是否在另一个文档的查找列表中,或者对另一个文档 ID 的引用是否有效。
可以在没有安全文档的公共数据库中使用验证功能 - 因此这两个概念可以一起工作,但不需要另一个。