PouchDB/CouchDB/ 使用 Electron 的用户注册

User registration for PouchDB/CouchDB/ with Electron

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

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

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

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

你应该使用 PouchDB 只有在你的应用程序必须可以离线工作的情况下。否则它会使代码不必要地变得更复杂,但不会为您的情况带来任何实际好处。只需通过其 HTTP API.

直接访问 CouchDB

CouchDB 区分两种类型的用户

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

如果 CouchDB 将在 Internet 上(而不是在 Intranet 上,只有受信任的用户才能访问),那么我会考虑使用服务器端进程来处理注册。该服务器端进程是唯一需要知道管理员 user/password 的进程,允许它向 couchDB _users table 添加用户(如 中所述)。

即将用户注册写成普通网站,在电子应用程序中只需将其作为网页访问即可。

您可以让 Electron 应用构建并发送一个特别签名的 cookie,以阻止非应用用户访问该页面。

通过该 cookie 进行限制应该可以很好地控制滥用行为。但是通过网络服务器进程,您仍然可以选择添加电子邮件确认步骤、通过 IP 地址、速率限制等进行限制(或者,如果真的绝望,可以在表单中添加 Cursed Captcha)。

这种方法的另一个优点是您不需要在 Electron 应用程序中对 CouchDB 管理员进行硬编码username/password。