在CouchDB中表示“业务逻辑用户”的标准方法是什么?

时间:2015-03-31 18:46:10

标签: couchdb user-management

我是couchDB的新手,还在阅读教程。我的问题是,这是将我的应用程序的每个用户表示为新数据库用户的正常方式,因为它似乎在我看来的任何地方都有解释?

让我们说我有一个有很多不同玩家的在线游戏 - 我会创建一个新的"数据库用户"对于每个注册的玩家?或者我会创建自己的数据库"播放器"并在应用程序中创建一个登录逻辑?不习惯于文档驱动的数据库,我似乎很难区分数据库用户和我的应用程序的用户......

2 个答案:

答案 0 :(得分:0)

你可以这样做。首先关于couchdb用户

  • couchdb中的用户存储在特殊的_users数据库

  • 数据库权限由特殊的_security文档处理。这特定于每个数据库。

  • 在安全文档中,您添加之前已存储在_users数据库中的用户。

所以你当然可以create a database per user。在此之前,请问自己,您存储在每个数据库中的数据是否真正独立。因为您无法跨数据库运行map reduce查询。因此,如果您计划针对不同用户对数据进行聚合,则此方法将无效。

Couchdb还可以帮助您进行应用级身份验证。由于couchdb使用基于cookie的身份验证:

  1. 存储您的"业务逻辑用户"在特殊的_users数据库中。
  2. 使用_session端点对其进行身份验证。
  3. 提取Cookie标头并将其与您的应用程序标头一起发送。
  4. 所有身份验证的逻辑都是由couchdb为您实现的。你所要做的就是操纵标题。从您的应用程序发送cookie,并在使用couchdb进行身份验证时,使用couchdb的标头发送它。

    如果您希望在应用程序中编写完整的会话管理,那也没关系。在这种情况下,只需将用户存储在数据库中,并在对其进行身份验证之前验证它们是否存在就像你对另一个数据库一样。

    使用couchdb的好处是它默认是安全的 - 使用pbkdf2加密方案来加密密码。

答案 1 :(得分:0)

如果您想要使用单个数据库管理所有文档,但仍然实现读/写ACL,则可以查看来自Chatty Couchapp TutorialSmileupps App Store应用

这是一个纯couchapp ,仅依靠CouchDB作为其后端。该教程仍在进行中,但是couchapp完全正常工作,您可以下载其源代码。

它使用单个CouchDB数据库实现基于角色/用户的读/写ACL 。这样您就不必设置N次复制,其中N取决于您的用户数量。您只有一个包含所有数据的数据库,易于查询(具有临时视图)和维护操作。当然,您可以决定增加数据库的数量,具体取决于您的数据类型和用例。

单个couchapp包含前端,管理信息中心和服务器端API 实施业务规则的所有必要代码

根据用户的角色,对不同部分的访问权限 。即他可以访问前端网站,但不能访问管理仪表板。

您可以安装免费试用版,然后使用Smileupps deployment tools下载源代码,进行更改,上传并检查更改。

相关问题