带有Electron的PouchDB / CouchDB /用户注册

问题描述 投票:1回答:2

我正在构建Electron桌面应用程序,而我要解决的第一件事就是与数据库进行交互的用户创建。想法是他们登录后便可以在应用程序中查看自己的用户信息。据我了解,我可以在pouchDB中做到这一点,并且最终将与远程CouchDB服务器同步。

我一直坚持用户创建(我什至还没有开始处理用户会话)。我用Electron创建了一个html表单,该表单接受电子邮件,用户名和密码。我计划使用PouchDB在本地存储信息,并最终与CouchDB服务器同步。我还没有编写任何JS来处理表单提交。当他们单击“注册”时,我希望创建该用户。

我很困惑,因为CouchDB中有一个_users数据库,据我了解可以存储用户的敏感信息(例如密码)。

我的问题:当用户提交上述表单时,是否在PouchDB中创建一个名为_users的数据库?最终,当我将其与CouchDB同步时,它将自动知道要在用户中存储哪些信息?

electron couchdb desktop-application pouchdb
2个回答
1
投票

您应仅使用PouchDB,以防必须脱机使用您的应用程序。否则,它将使不必要的代码变得更加复杂,但不会给您带来任何实际好处。只需直接通过其HTTP API访问CouchDB。

CouchDB区分两种类型的用户

  1. admin用户存储在配置文件$ COUCHDB_HOME / etc / local.ini的[admins]部分中。设置CouchDB时,要求您定义第一个管理员用户。稍后可能会创建其他管理员用户(请参见Creating New Admin User)。
  2. 常规用户存储在名为_users认证数据库中。用户文档包含系统信息,例如登录名,密码哈希和角色,但也可能包含个人信息,例如真实姓名,电子邮件,电话等。创建新的常规用户很简单(请参见Creating New User)。

0
投票

如果CouchDB将在Internet上(而不是Intranet上,只有受信任的用户可以访问),那么我将考虑服务器端进程来处理注册。该服务器端进程是唯一需要知道管理员用户/密码的进程,该进程允许其将用户添加到bedDB _users表中(如answer by uminder中所述)。

即将用户注册写为普通网站,然后在电子应用中将其作为网页访问。

您可以使用Electron应用程序构造并发送经过特殊签名的cookie,以阻止非应用程序用户访问该页面。

受该Cookie的限制,您应该可以很好地控制滥用行为。但是,通过使用网络服务器程序,您仍然可以选择所有选项来添加电子邮件确认步骤,受IP地址,速率限制等限制(甚至,如果真是绝望的话,将Cursed Captcha添加到表单中)。

此方法的另一个优点是,您不需要在Electron应用程序中对CouchDB管理员用户名/密码进行硬编码。

© www.soinside.com 2019 - 2024. All rights reserved.