Проверка ключей API в CouchDB - PullRequest
2 голосов
/ 31 августа 2010

Недавно я заинтересовался CouchDB и хотел создать небольшое приложение вокруг него.

Способ, которым я сейчас вызываю свою систему, заключается в том, что запросы приходят с двумя вещами: идентификатором, ключом API и форматом. Идентификатор - это _id документа в базе данных, ключ API - это _id другого документа со свойством {"valid": true / false}, а формат - это формат, который они хотят вернуть. Если ключ API действителен, система сгенерирует страницу показа для заданного идентификатора в запрошенном формате. В противном случае он вернет код статистики 403.

К сожалению, я не могу найти способ вытащить другой документ со страницы шоу. Я только начинаю CouchDB, так что, может быть, здесь есть что-то простое, что мне не хватает.

1 Ответ

4 голосов
/ 31 августа 2010

Функция _show включает три части:

  1. Проектный документ
  2. Функция показа внутри проектного документа
  3. Дополнительный документ

Для формата URL /db/_design/ddoc/_show/my_show_func/otherdoc:

  1. Проектный документ: _design/ddoc
  2. Функция показа shows.my_show_func в пределахэтот проектный документ
  3. Документ, который будет показан, имеет _id из otherdoc

Это два только двух документов.Единственный способ сделать то, что вы описываете, - это оформить документ на ключ API.Пользователь запросит /db/_design/API_KEY/_show/other_doc_id.CouchDB расслаблен.Нет ничего плохого в тысячах дизайнерских документов с одинаковыми или похожими функциями _show.Вы можете использовать метод HTTP COPY, чтобы при необходимости клонировать документ базового проекта в новый ключ API.Затем вы можете отозвать ключ API, удалив конструкторский документ.Однако это, очевидно, уникальный подход, о котором стоит подумать.

И последнее соображение (с CouchDB по умолчанию, без обратных прокси, mod_security и т. Д.), Если пользователь может прочитать один документ, он может прочитатьвся база данных (например, из запроса _all_docs). Поэтому функции show удобны для программного обеспечения, а не для шлюза безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...