我目前正在使用PouchDB / CouchDB为Cordova / PhoneGap应用程序执行用户管理系统。
这种方法是否可以接受并且相当安全?
1)注册通过对我网站上的API的Ajax调用发生。 (USERNAME和PASSWORD是用户输入)
$.post('https://example.com/api', {
user: "USERNAME",
password: "PASSWORD"
}, function(data){
// Something like "Success" or "Username is taken"
});
2)如果USERNAME和PASSWORD可以接受(例如,尚未使用用户名),API将使用cURL连接到我的Cloudant CouchDB实例(具有管理员权限)和
a)将用户添加到_users数据库
b)为用户创建数据库
c)将用户_reader和_writer权限授予他自己的数据库
(以下是2b的代码示例)
<?php
curl_setopt($ch, CURLOPT_URL, 'https://ACCOUNT.cloudant.com/USERNAME/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $USERINFO); // object containing USERNAME and PASSWORD
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Accept: */*'
));
curl_setopt($ch, CURLOPT_USERPWD, 'ADMINUSERNAME:ADMINPASSWORD'); // Admin credentials for my Cloudant instance
$response = curl_exec($ch);
?>
3)最后,如果客户端从Ajax调用收到“Success”,它将通过PouchDB authentication plugin登录到CouchDB:
var remoteDB = new PouchDB('https://ACCOUNT.cloudant.com/USERNAME');
remoteDB.login('USERNAME', 'PASSWORD').then(function (response) {
// "Success"
});
为简单起见,我省略了诸如santizing和错误处理等内容。这个问题只是关于我正在使用的结构和方法:)
提前致谢:)