在 CouchDB 中表示 "business-logic users" 的标准方法是什么?
What is the standard way to represent "business-logic users" in CouchDB?
我是 couchDB 的新手,仍在阅读教程。我的问题是,将我的应用程序 的每个用户 表示为 新数据库用户 是否是正常的方式,因为它似乎是这样解释的我到处看?
假设我有一个有许多不同玩家的在线游戏 - 我是否会为每个注册的玩家创建一个新的 "database user"?或者我会创建自己的数据库 "players" 并在应用程序中创建登录逻辑吗?不习惯文档驱动的数据库,不区分数据库用户和我的应用程序的用户对我来说似乎很奇怪...
你可以选择任何一种方式。首先是关于 couchdb 用户
couchdb 中的用户存储在特殊的 _users
数据库中
数据库权限由特殊的 _security 文档处理。这特定于每个数据库。
在安全文档中,您添加之前已存储在 _users
数据库中的用户。
所以你当然可以create a database per user。在这样做之前问问自己,您存储在每个数据库中的数据是否真正独立。因为您无法 运行 映射减少跨数据库的查询。因此,如果您计划对不同用户的数据进行聚合,那么这种方法将行不通。
Couchdb 还可以帮助您进行应用程序级别的身份验证。由于 couchdb 使用基于 cookie 的身份验证:
- 将您的 "business logic users" 存储在特殊的
_users
数据库中。
- 使用 _session 端点对其进行身份验证。
- 提取 cookie header 并将其与您的应用程序 header 一起发送。
所有认证逻辑都由couchdb 为您实现。您所要做的就是操纵 headers。从您的应用程序发送 cookie,并在使用 couchdb 进行身份验证时使用 couchdb 的 headers 发送它。
如果您更喜欢在您的应用程序中编写整个 session 管理,那也很好。在这种情况下,只需将用户存储在您的数据库中,并在对他们进行身份验证之前验证他们是否存在。就像您对另一个数据库所做的那样。
使用couchdb 的好处是它默认是安全的——使用pbkdf2 加密方案来加密密码。
如果您想使用单个数据库管理所有文档,但仍要实施 read/write ACL,您可以查看 Chatty Couchapp Tutorial app from Smileupps App Store
它是一个纯 Couchapp,仅依赖 CouchDB 作为其后端。本教程仍在进行中,但 couchapp 已完全正常运行,您可以下载其源代码。
它使用单个 CouchDB 数据库 实现了基于 role/user 的 read/write ACL。这样您就不必设置 N 个复制,其中 N 取决于您的用户数量。您只有一个包含所有数据的数据库,易于即时查询(使用临时视图)和维护操作。当然,您可以决定增加数据库的数量,具体取决于您的数据类型和用例。
一个 couchapp 包含 前端、管理仪表板和服务器端 API 实施业务规则
的所有必要代码
用户根据其角色对不同部分具有不同的访问权限。即他可以访问前端网站,但不能访问管理仪表板。
您可以安装免费试用版,然后使用 Smileupps deployment tools 下载源代码,更改它,上传回来并检查您的更改。
我是 couchDB 的新手,仍在阅读教程。我的问题是,将我的应用程序 的每个用户 表示为 新数据库用户 是否是正常的方式,因为它似乎是这样解释的我到处看?
假设我有一个有许多不同玩家的在线游戏 - 我是否会为每个注册的玩家创建一个新的 "database user"?或者我会创建自己的数据库 "players" 并在应用程序中创建登录逻辑吗?不习惯文档驱动的数据库,不区分数据库用户和我的应用程序的用户对我来说似乎很奇怪...
你可以选择任何一种方式。首先是关于 couchdb 用户
couchdb 中的用户存储在特殊的
_users
数据库中数据库权限由特殊的 _security 文档处理。这特定于每个数据库。
在安全文档中,您添加之前已存储在
_users
数据库中的用户。
所以你当然可以create a database per user。在这样做之前问问自己,您存储在每个数据库中的数据是否真正独立。因为您无法 运行 映射减少跨数据库的查询。因此,如果您计划对不同用户的数据进行聚合,那么这种方法将行不通。
Couchdb 还可以帮助您进行应用程序级别的身份验证。由于 couchdb 使用基于 cookie 的身份验证:
- 将您的 "business logic users" 存储在特殊的
_users
数据库中。 - 使用 _session 端点对其进行身份验证。
- 提取 cookie header 并将其与您的应用程序 header 一起发送。
所有认证逻辑都由couchdb 为您实现。您所要做的就是操纵 headers。从您的应用程序发送 cookie,并在使用 couchdb 进行身份验证时使用 couchdb 的 headers 发送它。
如果您更喜欢在您的应用程序中编写整个 session 管理,那也很好。在这种情况下,只需将用户存储在您的数据库中,并在对他们进行身份验证之前验证他们是否存在。就像您对另一个数据库所做的那样。
使用couchdb 的好处是它默认是安全的——使用pbkdf2 加密方案来加密密码。
如果您想使用单个数据库管理所有文档,但仍要实施 read/write ACL,您可以查看 Chatty Couchapp Tutorial app from Smileupps App Store
它是一个纯 Couchapp,仅依赖 CouchDB 作为其后端。本教程仍在进行中,但 couchapp 已完全正常运行,您可以下载其源代码。
它使用单个 CouchDB 数据库 实现了基于 role/user 的 read/write ACL。这样您就不必设置 N 个复制,其中 N 取决于您的用户数量。您只有一个包含所有数据的数据库,易于即时查询(使用临时视图)和维护操作。当然,您可以决定增加数据库的数量,具体取决于您的数据类型和用例。
一个 couchapp 包含 前端、管理仪表板和服务器端 API 实施业务规则
的所有必要代码用户根据其角色对不同部分具有不同的访问权限。即他可以访问前端网站,但不能访问管理仪表板。
您可以安装免费试用版,然后使用 Smileupps deployment tools 下载源代码,更改它,上传回来并检查您的更改。