2013-07-06 15 views
5

我的目標是能夠讀取一個數據庫而無需驗證用戶,因此需要驗證以編輯此數據庫。所有其他數據庫只能爲有效用戶讀/寫。我不希望爲我將來創建的每個數據庫都設置它,所需的讀/寫所需的身份驗證應該是默認值。如何在設置require_valid_user爲true時使公共CouchDB數據庫可讀?

我想我可以通過設置require_valid_usertrue來做到這一點,但現在CouchDB總是要求用戶名和密碼,所以我需要一種方法來排除一個數據庫。這個數據庫應該對公衆可讀,然後對有效用戶可寫。

回答

4

我通過一個數據庫(即/ login)驗證所有用戶來解決這個問題。該數據庫是公開的,並且包含一個帶有HTML文件的設計文檔作爲附件。用戶被提供這個文件,在窗體上填充他們的憑證,並且我使用jQuery.couch.js來在他們的瀏覽器中驗證並存儲cookie。一旦他們獲得了有效的登錄,我將檢查userCtx對象以檢查其角色,並將其重定向到適當的數據庫。

這是一個黑客攻擊,但是直到CouchDB能夠在沒有登錄到數據庫的情況下提供登錄頁面而不是JSON錯誤消息時,這是我找到的唯一可靠的方法。

請確保在設計文檔中使用validate_doc_update鍵保護您的公共登錄數據庫,這樣管理員除了可以覆蓋其中的任何內容外,其他人都無法覆蓋它。

希望這會有所幫助。

相關問題