【问题标题】:How to authenticate using php and javascript如何使用 php 和 javascript 进行身份验证
【发布时间】:2018-12-25 03:50:28
【问题描述】:

我已经为此工作了数周,需要一些指导。我没有使用 MongoDB 或 Phoenix 等。我使用的是 php (Laravel),我的数据的核心是 JSON。我想直接从 javascript 保存数据。因此,用户的数据在本地保存在 pouchdb 中,每个用户解决方案一个数据库,并同步到 couchdb Bitnami AWS(亚马逊网络服务器)上的远程 pouchdb。但是,我需要身份验证才能引用该远程 pouchdb。有代理身份验证。我在 Windows 上使用 Curl 来确认它可以正常工作,所以我必须正确配置它:

curl -X GET "http://127.0.0.1:5984/userdb-7374657665" -H "X-Auth-CouchDB-UserName:steve" -H "X-Auth-CouchDB-Roles:users" -H "X-Auth-CouchDB-Token:a615eaf122de48804df2e554ec63cb6b3014eb4d" -H "Content-Type: application/json; charset=utf-8"

我没有在 API 文档中找到它,并且我知道由于 javascript 中的安全控制方式,它无法工作。发布此内容的人提到了“Rails 或 Phoenix”:

    remoteDb = new PouchDB("http://localhost:5984/userdb-7374657665", {
    skipSetup: true, //Database is created when user is created
    ajax: {
        headers: {
            'X-Auth-CouchDB-UserName':'steve',
            'X-Auth-CouchDB-Roles':'users',
            'X-Auth-CouchDB-Token':'a615eaf122de48804df2e554ec63cb6b3014eb4d',
            'Content-Type':'application/json; charset=utf-8'
        }
    }
})
    .on('error', function (err) {
        console.log('error', err);
    });

注意我使用php获取创建用户时创建的数据库名称:$user_db = "userdb-" . bin2hex($user_name); 我还使用 php 找出了 Token:

$hash = hash_hmac("sha1", $user_name, $secret);

【问题讨论】:

  • 我最终使用了 pouchdb.authentication.js 库。现在已经足够好了。还有 Alex,我还能格式化什么?
  • 现在格式更好了,但是你发布的第一个版本需要严格的格式,这就是我留下评论的原因

标签: javascript php couchdb php-curl


【解决方案1】:

我不清楚你所说的远程 PouchDB 是什么意思——如果你有 CouchDB,你就不需要远程 PouchDB。要进行身份验证,您不需要 PouchDB 插件,您只需在 Javascript 中定义远程数据库时包含用户名和密码,如下所示:

var remotedb = new PouchDB('https://username:password@server/dbname');

这在“创建数据库”here 的 PouchDB API 文档中有所介绍。

【讨论】:

  • 我的错,这行得通。我不会担心代理身份验证。在here 的 pouchdb 文档中,他们指的是“远程数据库的选项”,我认为这是指 couchdb。
  • 好的,很高兴它有效!你能接受我的回答吗?
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2018-06-30
  • 2011-11-12
  • 2011-07-23
相关资源
最近更新 更多