簡體   English   中英

CouchDB驗證和安全文檔

[英]CouchDB validation and security document

我很困惑一個安全文件之間有什么區別(下圖)

在此輸入圖像描述

設置文檔中的validate_doc_update函數(見下文)之間的AND。

  function(newDoc, oldDoc, usersCtx){

     //validate code goes here

  }

哪一個用於什么點,每個用途的目的是什么?

先感謝您。

安全文檔存儲狀態(數據),而驗證文檔更新功能存儲行為(邏輯)。 它們共同構成了O​​O意義上的對象。

實際上, validate_doc_update函數的完整簽名

function(newDoc, oldDoc, userCtx, secObj)

其中secObj是安全文檔。 因此,如果您願意,可以將validate_doc_update解釋為secObj方法 目標是通過不必在驗證代碼中硬編碼數據來保持代碼整潔。

這些是適用於不同范圍的不同概念......

安全文檔這適用於全局數據庫。 它控制哪些用戶名具有管理員角色以及哪些用戶具有訪問權 如果數據庫不是公共的,則只有在本文檔中命名的用戶才能訪問(讀取或寫入)數據庫。 請注意,身份驗證在其他位置處理 - 此文檔僅處理經過身份驗證的用戶名。

即使沒有任何驗證功能,安全文檔也很重要,因為它控制數據庫級別的訪問。

驗證功能設計文檔的驗證功能允許設計人員限制對文檔的更改。 根據數據庫中所有設計文檔中所有驗證函數的結果,PUT / POST將成功或失敗。 然而,驗證功能可用的數據是有限的 - 除了正在更新的文檔和安全文檔之外,它不能引用任何其他文檔。

使用驗證功能,設計人員可以限制字段的值,控制哪些字段可以更改,以及根據當前用戶是否為管理員來改變權限。 但是,無法檢查另一個文檔的查找列表中的新值,或者對另一個文檔ID的引用是否有效。

可以在沒有安全文檔的公共數據庫中使用驗證函數 - 因此這兩個概念可以一起工作但不需要另一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM