我正在开发一个爱好者项目,以便更熟悉CouchDB。这是我第一次使用CouchDB。对于这个项目,我的目标是调查是否有可能只用HTML,CSS,JavaScript,CouchDB和nginx构建一个Web应用程序(即,我不在Couch中托管任何代码,只是数据) 。轻量级堆栈中的CouchDB安全性?
这可能是非常不切实际的,但我首先想要探索这个堆栈中的所有选项。
目前,我最大的问题是安全问题。假设我在CouchDB中有几个数据库,每个数据库都对应一个托管站点。在这个例子中,我们将关注单个数据库 - 即单个站点。这个网站的一些内容应该可供所有人使用,甚至是匿名用户。其他的东西应该只对具有特定角色的用户可用。我有什么选择,每个人有多安全?
我已经想出了一些想法,到目前为止,这是一个我打算周末去努力:
- 添加用户和角色
/{site_db}/_security
。- According to the Couch documentation,这样做会要求
{site_db}
中的任何数据请求来自经过身份验证的用户。
- According to the Couch documentation,这样做会要求
- 添加名为
anon
的用户,该用户只有一个角色,即anon
。 - 当用户第一次访问该站点时,我的JS模型将检查当前会话的状态(
GET /_session
)。- 如果没有会话存在,JS模型将使用
anon
帐户进行身份验证。
- 如果没有会话存在,JS模型将使用
- 在我的设计文档中定义视图。
- 任何仅适用于非匿名用户的视图都应检查
userCtx
对象上的角色。 - 验证任何新创建的文档应该检查
userCtx
以查看用户的角色是否在白名单上。
- 任何仅适用于非匿名用户的视图都应检查
这似乎是它应该工作,虽然我忍不住想这是过于复杂,而且必须有一个更好的办法。另外,我不确定如何防止anon
用户更新自己的用户文档以添加更多角色。