2011-02-10 88 views

回答

14

使用Apache CouchDB,讀取權限是每個數據庫,而不是每個文檔。如果用戶可以從數據庫獲取文檔,則用戶也可以獲取_all_docs?include_docs=true

我在這個問題上寫了關於CouchDB read authorization的詳細資料。

有幾個方法:

  1. 7層防火牆或反向HTTP代理。這很難做到正確;國際海事組織絕大多數都不可行您必須熟悉熟悉CouchDB的API,以確保每個可能的查詢都被阻止(例如_rewrite繞過您的過濾器)。

  2. 每個用戶一個數據庫。這是CouchDB的本地解決方案。創建數據庫非常便宜。然後,將用戶可以看到的文檔複製到他或她的數據庫中。用戶需要密碼在沙發上,或者一個OAuth帳戶。

  3. 我最近用每個用戶數據庫取得了成功,但是也是這個URL中的一個唯一鍵,授予它們直接訪問權。這感覺就像你想要的東西,然而在引擎蓋下我只是用隨機密碼創建一次性賬戶。鏈接進入公共頁面,如www.example.com/pastebin/index.html?doc_id=some_docid&secret=random_secret。然後,瀏覽器上的Javscript將讀取window.location並將該密碼插入到AJAX查詢中(在授權標頭中)。沙發授予許可,用戶很高興。不幸的是,這需要一點嘗試和錯誤;但它主要是簡單的網絡編程。

+0

Jason:你有博客嗎?我很想讀它! – Locohost 2013-09-04 13:19:52

相關問題