2013-03-01 39 views
2

我正在开发一个爱好者项目,以便更熟悉CouchDB。这是我第一次使用CouchDB。对于这个项目,我的目标是调查是否有可能只用HTML,CSS,JavaScript,CouchDB和nginx构建一个Web应用程序(即,我不在Couch中托管任何代码,只是数据) 。轻量级堆栈中的CouchDB安全性?

这可能是非常不切实际的,但我首先想要探索这个堆栈中的所有选项。

目前,我最大的问题是安全问题。假设我在CouchDB中有几个数据库,每个数据库都对应一个托管站点。在这个例子中,我们将关注单个数据库 - 即单个站点。这个网站的一些内容应该可供所有人使用,甚至是匿名用户。其他的东西应该只对具有特定角色的用户可用。我有什么选择,每个人有多安全?

我已经想出了一些想法,到目前为止,这是一个我打算周末去努力:

  1. 添加用户和角色/{site_db}/_security
  2. 添加名为anon的用户,该用户只有一个角色,即anon
  3. 当用户第一次访问该站点时,我的JS模型将检查当前会话的状态(GET /_session)。
    • 如果没有会话存在,JS模型将使用anon帐户进行身份验证。
  4. 在我的设计文档中定义视图。
    • 任何仅适用于非匿名用户的视图都应检查userCtx对象上的角色。
    • 验证任何新创建的文档应该检查userCtx以查看用户的角色是否在白名单上。

这似乎是它应该工作,虽然我忍不住想这是过于复杂,而且必须有一个更好的办法。另外,我不确定如何防止anon用户更新自己的用户文档以添加更多角色。

回答