javascript - 如何实现安全且同步的客户端到服务器连接
问题描述
我正在努力理解应该如何实现 pouchDB 交互。假设我想要一个具有同步和身份验证的离线优先应用程序,我是否需要实现一个中间人,例如节点服务器,以确保我的主服务器凭据受到保护,因为客户端上有一个带有 new PouchDB('name', '<a href="https://username:password@server/dbname" rel="nofollow noreferrer">https://username:password@server/dbname') 我对主数据库的信任被暴露了。连接到节点服务器并决定是否允许访问会更好吗?
这将如何完成?我可以使用身份验证处理与服务器的直接连接并且它是安全的吗?或者是否需要一个中间人来确保安全。
如果需要中间人,您是否需要实现一种 api 即
//client
const db = new Pouch('days')
db.sync(remote)
//server
app.get('/db/days', (res, req) => // do some pouch stuff for each db)
解决方案
稍微简化一下,如果您的应用程序由应用程序“主”数据库支持并且使用一组凭据运行,则您需要一个中间层:然后您需要将所有用户的数据多路复用到一个数据库中。
由 CouchDB/Cloudant 支持的应用程序通常使用“每用户数据库”模式,这意味着每个应用程序用户都有自己的数据库和自己的凭据,这意味着很多事情在概念上变得更简单,并且中间层可能不需要。
请注意,如果您打算满足数百万用户的需求,则需要考虑“每个用户的数据库”模式才能很好地扩展。
在 Cloudant 上,您还可以使用 API 密钥来定义访问权限。
如果您希望 db-per-user 模式的简单性没有(某些)缺点,您可以从 Cloudant Envoy ( https://github.com/cloudant-labs/envoy ) 中获得一些灵感——将用户数据多路复用到单个数据库中的瘦代理,同时仍向外呈现 db-per-user API 表面。免责声明:我是 Envoy 的作者之一。
推荐阅读
- sql - SQL - 根据两个原始列之间的一对一或一对多关系创建新列
- vba - 解锁文件夹/驱动器 - 当被 VBA 锁定时
- php - 在 PHP 5 和 PHP 7 中从 preg_replace 到 preg_replace_callback 的转换
- java - 如何使用字符串生成器
- logstash - 如何将logstash中的日期与不同的空格匹配
- sql-server - 带日期(周)的 SQL 查询动态数据透视
- google-apps-script - 很抱歉,从存储读取时发生服务器错误。错误代码未经身份验证
- php - 将用户重定向到他们登录后离开的页面
- python - 即使安装了所有必需的软件包,Matplotlib 也没有安装
- python - 如何修复 PyCharm 在 Python 3.8 上给我的这个错误