2015-03-31 60 views
1

我是新來的couchDB和仍然閱讀教程。我的問題是,如果是將我的應用程序的每個用戶表示爲新數據庫用戶的正常方式,因爲它似乎在我看起來處處解釋了這種方式?在CouchDB中表示「業務邏輯用戶」的標準方式是什麼?

比方說,我有一個在線遊戲與許多不同的球員 - 我會爲每個註冊的球員創建一個新的「數據庫用戶」嗎?或者我會自己創建數據庫「玩家」並在應用中創建登錄邏輯?不習慣文件驅動的數據庫,我似乎很奇怪不區分我的應用程序的db用戶和用戶...

回答

0

你可以這樣做。首先是關於用戶的CouchDB CouchDB中

  • 用戶存儲在一個特殊的數據庫_users

  • 數據庫權限是由一種特殊的_security文檔處理。這是針對每個數據庫的。

  • 在安全文檔中,您可以添加之前已存儲在_users數據庫中的用戶。

所以你當然可以create a database per user。在此之前,問問你自己是否存儲在每個數據庫中的數據是真正獨立的。因爲你不能在數據庫上運行map reduce查詢。因此,如果您計劃針對不同用戶對數據進行彙總,則此方法無效。

Couchdb還可以幫助您進行應用程序級別的身份驗證。由於couchdb使用基於cookie的身份驗證:

  1. 將您的「業務邏輯用戶」存儲在特殊_users數據庫中。
  2. 使用端點_session對其進行身份驗證。
  3. 提取cookie標頭並將其與您的應用程序標頭一起發送。

所有用於身份驗證的邏輯都是由couchdb爲您執行的。你所要做的就是操縱標題。從您的應用程序發送cookie,並在使用couchdb進行身份驗證時,使用couchdb的頭文件發送它。

如果您更喜歡在您的應用程序中編寫完整的會話管理,那也可以。在這種情況下,只需將用戶存儲在數據庫中,並在驗證它們之前驗證它們是否存在。就像你會用另一個數據庫一樣。

使用couchdb的好處是默認情況下它是安全的 - 使用pbkdf2加密方案來加密密碼。

0

如果你不是想用一個單一的數據庫,但仍然實現讀/寫訪問控制列表來管理所有的文檔,你可以從Smileupps App Store

檢查Chatty Couchapp Tutorial應用這是一個純couchapp,依靠CouchDB的僅作爲其後端。該教程仍在進行中,但couchapp正在全面運行,您可以下載它的源代碼。

它使用單個CouchDB數據庫實施基於角色/用戶的讀/寫ACL。這樣,您不必設置N個複製,其中N取決於您的用戶數量。您只有一個數據庫包含您的所有數據,易於查詢(有臨時視圖)和維護操作。當然,您可以決定增加數據庫的數量,具體取決於您的數據類型和用例。

單couchapp包含所有必要的代碼前端,管理儀表板和服務器端API實現業務規則

用戶,這取決於他的角色有不同的部分不同的訪問。即他可以訪問前端網站,但不能訪問管理儀表板。

您可以安裝免費試用版,然後使用Smileupps deployment tools下載源代碼,進行更改,上傳並檢查您的更改。

相關問題