关键问题是您是否想向公众公开 CouchDB。
如果您想将您的 CMS 构建为经典的 3 层架构,其中 CouchDB 只能从特权脚本层(例如 PHP)访问,那么我建议您推出自己的授权系统。这将使您更好地控制授权逻辑。特别是,您可以实现基于文档的读取访问控制(在 CouchDB 安全系统中不可用)。
相反,如果您想向公众公开 CouchDB,情况就不同了。您实际上无法编写服务器端逻辑(通过更改提要的单独异步侦听器除外),因此您必须使用CouchDB 内置的身份验证/授权系统。这限制了您在数据库级别(而不是文档级别!)上控制读取访问。可以使用验证功能控制写访问。CouchDB 管理员不应等同于应用程序管理员,因为 CouchDB 管理员与传统设置中的服务器管理员相当。CouchDB 中的数据库管理员会更合适(可以更改设计文档并因此对 CMS 安装进行修改,例如添加插件)。所有其他具有写访问权限的用户都可以实现为数据库成员。
我更喜欢第二种方法,因为这将使您有可能利用 CouchDB 的所有出色功能,例如复制和更改提要。但是,如果您需要细粒度的读取访问控制,则必须在具有不同成员的数据库之间进行一些过滤复制。
如果您想使用 CouchDB 提供的身份验证机制以外的其他身份验证机制,您最终将不得不修改安装(如果您想使用托管的 CouchDB,这可能是一个问题)。对于 facebook 插件,请参见https://github.com/ocastalabs/CouchDB-Facebook-Authentication。