С Apache CouchDB разрешение на чтение для каждой базы данных , а не для документа.Если пользователь может получить документ из базы данных, он также может получить _all_docs?include_docs=true
.
Я написал подробности в этом вопросе о CouchDB авторизации чтения .
ТамЕсть несколько подходов:
Брандмауэр уровня 7 или обратный HTTP-прокси.Это трудно сделать правильно;ИМО не выполнимо для большинства.Вы должны быть очень знакомыми с API CouchDB, чтобы быть уверенным, что все возможные запросы заблокированы (например, _rewrite
обходит ваш фильтр).
Одна база данных на пользователя.Это родное решение CouchDB.Создание баз данных очень дешево.Затем скопируйте документы, которые пользователь может просматривать, в свою базу данных.Пользователю нужен пароль на Couch или учетная запись OAuth.
Недавно я успешно пользовался базами данных для каждого пользователя, но также уникальный ключ в URLчто дает им немедленный доступ.Похоже, что вы хотите, однако под капотом я просто создаю одноразовые учетные записи со случайными паролями.Ссылка ведет на общедоступную страницу, например www.example.com/pastebin/index.html?doc_id=some_docid&secret=random_secret
.Затем Javscript в браузере прочитает window.location
и вставит этот пароль в запрос AJAX (в заголовке авторизации).Диван дает разрешение, и пользователь счастлив.К сожалению, это потребовало немного проб и ошибок;однако это в основном простое веб-программирование.