CouchDB предлагает проверку перед тем, как разрешить вставку объекта / строки в базу данных. Это гарантирует, что если у вас есть общедоступное приложение для дивана, ваша база данных никем не будет заполнена мусором.
User <-> CouchDB
Тем не менее, я пытаюсь выяснить, как это выглядит из стандартного дизайна приложения. процесс, в котором у вас есть доверенный средний уровень , который выполняет большую часть работы по авторизации . Например, большинство приложений размещают Ruby или PHP между базой данных и пользовательским агентом, что позволяет приложению вычислять информацию о пользовательском агенте, прежде чем разрешить сохранение чего-то вроде сообщения в базе данных.
User -> Ruby -> MySQL
User <- Ruby <- MySQL
Как вы доверяете пользователю выполнять административные задачи, когда пользователю нельзя доверять?
Например, как бы вы сделали что-то вроде «проверки электронной почты» перед вставкой пользовательской строки, используя только couchDB? Вы не можете позволить пользовательскому агенту вставить строку - потому что они заполнили бы систему аккаунтами для спама. С другой стороны, нет и среднего уровня, который мог бы вставлять строку после того, как они щелкнули ссылку в электронном письме.
Как насчет этого, я предполагаю, что вы позволите кому-либо вводить свой адрес электронной почты, создав новую запись в общедоступная таблица, например email_verify
. Это то, что может сделать общедоступный пользовательский агент, поскольку таблица ничего не сделает в приложении - это будет просто резервуар для хранения.
Затем node.js может отслеживать фид _changes и отправлять электронное письмо с активацией при создании нового запись в частной таблице (например, email_confirm
) (node.js будет служить доверенным промежуточным уровнем). Если пользователь щелкнет эту ссылку и вернется, то ... [unknown] ... и node.js наконец сможет создать запись в частной таблице пользователей ( user
).
На этом этапе мы затем можно было бы полагаться на проверку couchdb для остальной части приложения, поскольку мы создали подтвержденную учетную запись пользователя.
В качестве дополнительной информации давайте представим обсуждение, построенное на couchdb, для которого любой может зарегистрироваться. Мы не хотим позволять кому-либо напрямую отправлять контент без какой-либо проверки - все же пользовательские агенты напрямую запускают систему . (Таблицы: Тема
, Комментарий
и Пользователь
). Как это будет работать?