如何使用php和javascript进行身份验证

时间:2018-07-17 12:30:37

标签: javascript php couchdb php-curl

我已经待了好几个星期了,需要一些指导。我没有使用MongoDB或Phoenix等。我正在使用php(Laravel),数据的核心是JSON。我想直接从javascript保存数据。因此,用户数据将本地存储在pouchdb中(每个用户解决方案一个数据库),并同步到长沙发Bitnami AWS(Amazon Web Server)上的远程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中的安全性控制方式而无法使用。发布此信息的人称为“铁路或凤凰”:

    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找出了令牌:

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

1 个答案:

答案 0 :(得分:0)

我不清楚您对远程PouchDB的含义-如果您具有CouchDB,则不需要远程使用PouchDB。要进行身份验证,不需要PouchDB插件,只需要在Javascript中定义远程数据库时包括用户名和密码,如下所示:

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

“创建数据库” here的PouchDB API文档中对此进行了介绍。