javascript - 如何实现安全且同步的客户端到服务器连接

标签 javascript node.js couchdb pouchdb

我正在努力理解应该如何实现 pouchDB 交互。假设我想要一个具有同步和身份验证功能的离线优先应用程序,我是否需要实现一个中间人(例如 Node 服务器)以确保我的主服务器凭据受到保护,因为客户端上有一个带有 new PouchDB('name', ' https://username:password@server/dbname ') 我对主数据库的信任被暴露了。连接到 Node 服务器并决定是否允许访问会更好吗?

enter image description here

这将如何完成?我可以使用 auth 处理与服务器的直接连接并且它是安全的吗?或者是否需要中间人来确保安全。

如果需要中间人,您是否需要实现一种 api,即

//client
const db = new Pouch('days')
db.sync(remote)

//server
app.get('/db/days', (res, req) => // do some pouch stuff for each db)

https://github.com/pouchdb-community/pouchdb-authentication

最佳答案

稍微简化一下,如果您的应用程序由应用程序“主”数据库支持,并且它使用一组凭据运行,则您需要一个中间层:然后您需要将所有用户的数据多路复用到一个数据库中。

由 CouchDB/Cloudant 支持的应用程序通常使用“每个用户一个数据库”模式,这意味着每个应用程序用户都有自己的数据库和自己的凭据,这意味着很多事情在概念上变得更简单,并且可能不需要中间层。

请注意,如果您打算满足数百万用户的需求,“每个用户一个数据库”模式需要一些考虑才能很好地扩展。

在 Cloudant 上,您还可以使用 API key 来定义访问权限。

如果您想要 db-per-user 模式的简单性而没有(某些)缺点,您可以从 Cloudant Envoy (https://github.com/cloudant-labs/envoy) 中汲取一些灵感——一个多路复用用户数据的瘦代理到单个数据库中,同时仍然向外呈现每个用户的数据库 API 表面。免责声明:我是 Envoy 的作者之一。

关于javascript - 如何实现安全且同步的客户端到服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557256/

相关文章:

database - 使用 CouchDB 的复合键,查找多条记录

couchdb - Couchdb墨盒在Docker镜像中无响应

javascript - JS 封装——IIFE vs 常规函数

node.js - 使用 API 创建 Google 日历事件不会创建环聊链接

node.js - 无法在亚马逊ec2实例中为我的nodejs应用程序安装java模块

javascript - 为什么 ReactJS 仅在本地主机上呈现图表中的数据值?

javascript - 插入 couchdb 数据库后未找到/丢失文档

javascript - xhr.send(file) 不会将其作为多部分发布

javascript - 将动态输入字段与 php foreach 结合使用

Javascript 在日期上设置图像,否则隐藏 div