Couchdb外部认证

cub*_*war 5 authentication couchdb laravel pouchdb

我正在开发一系列实用程序应用程序,其中每个应用程序都可以在台式机,移动设备和网络上使用。经过研究后,我决定在客户端上使用pouchdb并在服务器上使用couchdb来提供脱机同步。

用户将能够在网络上创建一个帐户(Laravel Spark应用程序)来管理他们的应用程序订阅/付款,还可以访问应用程序的网络版本。在移动设备和台式机上,用户将使用其凭据登录每个应用程序以解锁功能。

我打算在经过过滤的复制(基于文件所属的应用程序)中在ouchdb中采用每用户数据库方法。基本要求是用户可以在应用程序中登录一次,然后再永久安全地复制到benchdb(直到注销)。

鉴于以下概述的用例,采用长沙发进行身份验证的最佳方法是什么?

  • 通过Laravel代理所有请求以进行身份​​验证
  • 在Laravel应用程序中创建帐户时,请使用随机生成的密码创建一个ouchdb用户,然后当用户在应用程序上登录时返回此密码以验证将来的请求(创建的用户数量是否受到限制)?
  • 将Laravel应用程序用作oauth服务器,并使用oauth令牌直接向沙发床发出请求。
  • 还有吗

cub*_*war 5

最后,我找到了通过 Laravel 代理对 CouchDB 的所有请求的最佳方法,即利用 Passport 包进行 API 身份验证。

为此,我通过以下步骤连接到了在用户注册时设置 CouchDB 数据库的Spark::createUsersWith()函数:SparkServiceProvider

  1. 生成一个 couchdb 特定的用户名并将其保存在用户记录中。
  2. 创建一个与步骤 1 中生成的名称相同的 couchdb 数据库。
  3. 将设计文档添加到数据库,并使用过滤器进行特定于应用程序的同步。
  4. 添加安全文档以仅允许数据库所有者(在后续步骤中创建)读取/写入。
  5. 使用步骤 1 中生成的用户名创建 CouchDB 用户。

然后,用户可以使用用户名和密码登录应用程序以接收 OAuth2 密码授予令牌。

然后,所有同步请求都使用身份验证令牌发送到我的同步代理控制器,详细信息请参阅本要点

要保存搜索,可以将 PouchDB 设置为自动发送 OAuth 令牌,如下所示:

this._remoteDB = new PouchDB(url, {
    ajax : {
        headers : {
            "Authorization" : "Bearer " + localStorage.getItem("token")
        }
    }
});
Run Code Online (Sandbox Code Playgroud)