2012-05-04 3 views
4

Я пытаюсь отфильтровать свою коллекцию документов в соответствии с пользователями, которые входят в систему. Я следил за instructions for auth, указанными людьми cloudant.com, я создал _user db и оно работает.cloudant: получить некоторые пользовательские поля

Теперь мой вопрос: возможно ли добавить какой-либо специальный ключ к объекту пользователя и получить его из моего кода с помощью некоторого js-плагина, такого как jquery.couchLogin?

пример того, что я хочу создать:

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

, а затем получить MYKEY1 И MYKEY2 ....

Я уже пробовал с $ .couchLogin, но все, что я могу получить это объект, который userCtx выводит только некоторые из вышеуказанных полей (имя, роли). Кажется, что я должен обмануть код couchdb, чтобы добавить ключи к объекту userCtx, и я действительно этого не хочу.

Есть ли более простое решение?

ответ

3

Поскольку этот вопрос не получил ответа, я сообщаю здесь ответ Cloudant поддержки:

Вы не можете хранить эту информацию в документе пользователя на общественного кластера Cloudant в целях безопасности. Если бы вы могли, если бы вы были , работающие с CouchDB, BigCouch или частным кластером Cloudant.

Однако вы можете сохранить эту информацию в одной из своих баз данных, а у есть клиент (при условии, что это сервер приложений, а не браузер) выполняют фильтрацию и разрешения .

Так что моя стратегия теперь будет в

  1. создать еще одну БД со всей информацией, мне нужно о пользователе.
  2. сделать этот db доступным только для авторизованных пользователей
  3. получить клиентскую сторону (после проверки входа) всю необходимую информацию.

Я буду держать вас в курсе, чтобы убедиться, что это работает и с какими проблемами я столкнулся.

UPDATE

Это сработало! Таким образом, стратегия, в основном, чтобы сделать две базы данных:

  1. один (_users) с именем, ша пароли и т.д., специфичные для Cloudant
  2. еще один (your_users_DB) только с именем пользователя и другими клавишами, что нужно для различных действий вам нужно выполнить.

Так что я сделал, чтобы создать эту вторую базу данных с документами структурированы следующим образом:

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

Затем, когда пользователь (скажем, USERONE) журналы в успешно, и этот документ будет извлекаемые, и Поле «фильтры» используется для фильтрации моей коллекции.

Вид обходного пути, но он работает надежно