【问题标题】:Couchdb external authenticationCouchdb 外部认证
【发布时间】:2016-12-22 09:37:33
【问题描述】:

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

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

我计划在 couchdb 中使用过滤复制(基于文件所属的应用程序)采用每个用户的数据库方法。基本要求是用户可以在应用程序中登录一次,然后永远安全地复制到 couchdb(直到退出)。

考虑到下面概述的用例,使用 couchdb 进行身份验证的最佳方法是什么?

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

【问题讨论】:

    标签: laravel authentication couchdb pouchdb


    【解决方案1】:

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

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

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

    然后,用户可以使用他们的用户名和密码登录应用,以接收 OAuth2 密码授权令牌。

    然后,所有同步请求都使用身份验证令牌发送到我的同步代理控制器,详细信息为 in this gist

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 2019-05-11
      • 2012-08-16
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多