背景
现在,我正在尝试使用 couchDB/couchapp 构建一个应用程序,该应用程序将存储来自用户的持久且重要的信息,并且停留在用户使用 couchapp 注册所需的步骤上。
本质上,我想做的是有一个简单的注册表单,用户可以使用它来注册使用我的应用程序的帐户。这需要在 couchdb _users 数据库中创建一个新用户,并创建一个新数据库,并为新用户分配数据库管理员的角色。
所有这些都需要服务器管理员凭据。
理想情况下,我希望能够使用其中之一拨打电话jquery.couch.js
功能,但似乎没有安全的方法来做到这一点。 (或者有吗??)
Question
将该任务转移到中间层软件或其他软件的最有效且安全的方法是什么?
我所说的高效,是指用户需要最少的步骤,但对我来说不一定是最少的麻烦。
截至目前,我已经设置了一个单独的 node.js 服务器来接收注册请求。我的 couchDB 服务器管理凭据作为假定的私有变量存储在节点上server.js
文件。然后,我使用以下命令将任何数据库创建请求发送回 couchDBcouch-client.
我是否在这里跳过了太多(潜在的不安全的)障碍?有没有更好的方法来确保安全的注册过程?
Thanks.
需要管理员用户来创建数据库并分配数据库管理员。
多米尼克的回答很棒。然而,另一种选择是保留直接 couchapp 架构并运行管理代码external,在用户沙发链之外。
例如,在 NodeJS 中,以管理员身份连接到 CouchDB。询问/_users/_changes?feed=continuous&include_docs=true
。您将收到一个data创建用户时实时发生的事件。当您看到新用户时,创建数据库并将其分配为管理员。
客户端代码可以轮询他们的新数据库。或者,客户端也可以查询/_users
通过_changes
COMET 饲料也。无论哪种方式,一旦浏览器知道帐户已设置,您就可以在 UI 中向用户显示它。
代理(三层架构)非常棒。没有什么是他们做不到的。然而,我通常更喜欢“带有外部代理的 CouchDB”架构,原因有两个:
- 很简单。有一台网络服务器。用户连接到 CouchDB。您连接到 CouchDB。一切都在数据库中。配置和维护问题较少。
- 它很灵活。您可以用任何语言编写外部客户端,并在任何服务器上运行。您可以编写一个大型应用程序来完成所有操作,或者编写许多小型应用程序来专注于每个任务(例如创建新数据库、向用户发送电子邮件告知丢失的密码、在数据库太大时通知您等等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)