laravel - Couchdb 外部身份验证

标签 laravel authentication couchdb pouchdb

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

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

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

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

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

最佳答案

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

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

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

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

然后,所有同步请求都使用身份验证 token 发送到我的同步代理 Controller (详细信息 in this gist)。

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

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

关于laravel - Couchdb 外部身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967656/

相关文章:

Laravel Controller 子文件夹路由

php - 删除重复的记录,保留id较低的记录

PHP Faker 生成范围内的唯一日期

php - 使用ajax分页获取查询字符串

mysql - 计算每个月登录的天数

jsp - 如何使用带身份验证的servlet和jsp?

python - 如何修复 sh : 1 curl not found

objective-c - 将 Objective-C 对象序列化和反序列化为 JSON

function - 如何使用CouchDB中的更新功能上传附件

java - 注销后无法清除访问 token