Как создать базу данных пользователей в приложении с моделью безопасности базы данных для каждого пользователя? (для каждого документа доступ для чтения) - PullRequest
6 голосов
/ 27 марта 2011

Здравствуйте, я прочитал о двух способах реализации доступа на чтение документа для couchapps:

  1. Каждый пользователь получает свою собственную базу данных, которая содержит только данные, которые этому пользователю разрешено читать.Затем все пользователи записывают в основную базу данных, которая реплицируется на все пользовательские базы данных, используя фильтр репликации, который решает, кто что может читать.
  2. Использование функций списка для фильтрации вывода других представлений и ограничения доступа через прокси-сервер ибелый список.

У меня есть несколько вопросов по этому поводу:

  1. Есть ли еще возможности для доступа на чтение на уровне документа?

  2. Как мне создать личную базу данных пользователей в couchapp?для этого мне нужны права администратора, но пользователь, заполняющий форму регистрации моего приложения, явно не может иметь права администратора.Нужен ли мне средний уровень (php и т. д.) для процесса регистрации, чтобы я мог создать необходимую базу данных?

  3. Когда у меня наконец появится эта база данных, мне нужно начать непрерывноРепликация с использованием фильтра.где-то я читал, что такие репликации не возобновляются при перезагрузке сервера.Нужен ли мне хронограф, воссоздающий эти репликации каждые x часов в случае сбоя сервера ??

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

Ответы [ 2 ]

2 голосов
/ 27 марта 2011
  1. Я не знаю ни одного другого способа, который бы сразу работал, кроме как, например, изменение исходного кода CouchDB. Одна из возможностей - использовать транк (или v1.1, когда он выпущен), который может иметь внешний API . Внешними являются веб-серверы, на которые CouchDB будет переадресовывать некоторые соединения.

  2. Вам необходим третий слой, но не обязательно средний слой. Ваше внешнее программное обеспечение будет подключаться к CouchDB в качестве администратора и выполнять задачи, которые ожидают решения. Например, когда пользователю нужна новая база данных, он создает документ в общедоступной БД, затем внешнее программное обеспечение создает базу данных, назначает пользователя администратором и т. Д. Это просто очень . это путем запроса /_changes?feed=continuous, потому что вы получаете в реальном времени обновления от пользователей. Я предпочитаю это, а не средний уровень, потому что программное обеспечение проще (без дополнительной веб-разработки, просто CouchDB GET и PUT), и оно может привести к сбою, перезапуску, обновлению и т. Д. Без особого влияния на пользователей.

  3. В любом случае, работа cron не является плохой идеей. Эй, это может быть частью вашего внешнего процессора с шага 2 выше! Однако, начиная с CouchDB 1.1, репликации будут перезапускаться после перезапуска дивана.

  4. Он не должен тратить много места. В зависимости от вашего приложения вы хотите получить все общие данные в общей базе данных и все личные данные в частной базе данных для каждого пользователя. Но даже если у вас есть дубликаты данных, я бы не назвал это отходами . Дисковое пространство стоит очень небольших затрат по сравнению с усилиями разработчика или нематериальными затратами на проблемы безопасности.

В зависимости от вашего приложения у вас есть в будущем огромные возможности для мобильных или автономных функций. Когда вы выпускаете iPhone, настольный компьютер или автономное веб-приложение, пользователи могут работать с локальной репликой своей базы данных, а затем синхронизироваться с «официальной» базой данных на вашем сервере, как только они снова подключатся. Для некоторых приложений это становится обязательной функцией, так как люди ожидают использовать приложения в любой ситуации.

0 голосов
/ 24 сентября 2012

Я собрал несколько примеров доступа для чтения в моей дипломной работе.Вы можете найти примеры кодов здесь: https://github.com/Goltergaul/bachelorthesis2---todolist-couchapp

...