Authentication PockDB脱机身份验证/登录-将用户与远程db同步?

Authentication PockDB脱机身份验证/登录-将用户与远程db同步?,authentication,couchdb,progressive-web-apps,pouchdb,Authentication,Couchdb,Progressive Web Apps,Pouchdb,我正在使用Vue.js开发一个PWA。为了同步数据,我们在客户端和远程express PockDB服务器上使用PockDB 启动应用程序时,我们希望用户登录,无论是在线还是离线 因此,我们的想法如下: 当第一次打开网站时,用户必须登录远程数据库 所有用户都同步到本地数据库实例 当PWA打开且客户机不在线时,则针对本地数据库进行身份验证,否则针对远程数据库进行身份验证(并保持用户同步) 有可能实现这种行为吗? 我见过一些身份验证插件,也就是说,尽管我不确定这些插件是否能满足我们的要求。您可以通过加

我正在使用Vue.js开发一个PWA。为了同步数据,我们在客户端和远程express PockDB服务器上使用PockDB

启动应用程序时,我们希望用户登录,无论是在线还是离线

因此,我们的想法如下:

  • 当第一次打开网站时,用户必须登录远程数据库
  • 所有用户都同步到本地数据库实例
  • 当PWA打开且客户机不在线时,则针对本地数据库进行身份验证,否则针对远程数据库进行身份验证(并保持用户同步)
  • 有可能实现这种行为吗?
    我见过一些身份验证插件,也就是说,尽管我不确定这些插件是否能满足我们的要求。

    您可以通过加密数据库来实现

    然后,如果您是脱机而不是登录,则输入密码进行解密。问题是,如果在脱机打开应用程序时注销,则无法获取用户信息

    因此,您需要将用户信息存储在本地,存储在不复制的本地文档中。由于不支持脱机身份验证,您必须检查本地存储的用户/密码。因此,您将有两个单独的在线登录(您可以通过PockDB身份验证轻松实现这一点)和离线登录

    就个人而言,最好的解决方案是在注销时转储数据库。然后删除本地数据库(浏览器中的数据)。如果您联机,则进入标准登录,成功后加载转储并同步到远程。如果您处于脱机状态,请检查本地存储的用户/密码,并在成功加载转储后再次检查。
    此外,您还可以加密转储的数据库。

    我想知道为什么您甚至希望用户在本地登录。在浏览器中存储登录凭据,即使它们是散列或加密的,也不是什么好主意。相反,如果存在cookie/JWT,您可以简单地自动加载用户数据,如果不存在cookie/JWT,则提示登录。