4

我正在尝试根据登录的用户过滤我的文档集合。我按照cloudant.com 人员给出的身份验证说明,创建了一个 _user 数据库,它可以工作。

现在我的问题是:是否可以使用 jquery.couchLogin 之类的 js 插件向用户对象添加一些临时密钥并从我的代码中检索它?

我要创建的示例:

{
    "_id": "org.couchdb.user:agata",
    "_rev": "1-03a67c25da054b5f24d215f4db059d71",
    "name": "agata",
    "type": "user",
    "roles": ["admin"],
    "password_sha": "***",
    "salt": "***",
    "MYKEY1":"my val",
    "MYKEY2":"my val2"
}

然后检索 MYKEY1 AND MYKEY2....

我已经尝试过使用 $.couchLogin,但我能检索到的只是一个 userCtx 对象,它只报告上述一些字段(名称、角色)。看来我应该用 couchdb 代码欺骗 userCtx 对象,我真的不想这样做。

有没有更简单的解决方案?

4

1 回答 1

3

由于这个问题没有得到答案,我在这里报告 cloudant 支持的答案:

出于安全目的,您不能将该信息存储在 Cloudant 的公共集群上的用户文档中。而如果您正在运行 CouchDB、BigCouch 或私有 Cloudant 集群,则可以。

但是,您可以将该信息存储在您的一个数据库中,并让客户端(假设它是应用服务器而不是浏览器)执行过滤和权限。

所以我现在的策略是

  1. 使用我需要的有关用户的所有信息创建另一个数据库。
  2. 使此数据库仅可供授权用户访问
  3. 检索客户端(检查登录后)我需要的所有信息。

我会及时通知您以验证它是否有效以及我遇到了什么问题。

更新

有效!所以策略基本上是做两个数据库:

  1. 一个 (_users) 具有名称、sha 密码等,特定于 cloudant
  2. 另一个 (your_users_DB) 仅包含用户名和您需要执行的各种操作所需的其他键。

所以我所做的是创建第二个数据库,其文档结构如下:

{"_id":"org.couchdb.user:USERONE",
"name":"USERONE",
"type":"user",
"roles":["user"],
"filters":{"FILTER1":"VAL1","FLTER2":"VAL2"}}

然后当用户(比如说 USERONE)成功登录时,也会检索到这个文档,并且“过滤器”字段用于过滤我的集合。

一种解决方法,但它运行良好

于 2012-05-07T09:39:13.483 回答