2011-02-10 10 views

Odpowiedz

14

Z Apache CouchDB, uprawnienie do odczytu jest na bazę danych, a nie na dokument. Jeśli użytkownik może pobrać dokument z bazy danych, użytkownik może pobrać także _all_docs?include_docs=true.

Napisałem szczegóły w tym pytaniu o CouchDB read authorization.

Istnieje kilka podejść:

  1. Layer-7 firewall lub reverse proxy HTTP. Trudno to zrobić poprawnie; IMO nie jest możliwe dla większości. Musisz być bardzo zaznajomiony z API CouchDB, aby mieć pewność, że wszystkie możliwe zapytania są blokowane (np. _rewrite będzie przechodzić przez twój filtr).

  2. Jedna baza danych na użytkownika. To jest natywne rozwiązanie CouchDB. Tworzenie baz danych jest bardzo tanie. Następnie skopiuj dokumenty, które użytkownik może zobaczyć do swojej bazy danych. Użytkownik potrzebuje hasła na kanapie lub na koncie OAuth.

  3. Ostatnio odniosłem sukces z bazami danych dla poszczególnych użytkowników, ale również unikalny klucz w adresie URL, który zapewnia im natychmiastowy dostęp. Czuje się, jak chcesz, ale pod maską tworzę tylko konta jednorazowe z losowymi hasłami. Link prowadzi do strony publicznej, takiej jak www.example.com/pastebin/index.html?doc_id=some_docid&secret=random_secret. Następnie Javscript w przeglądarce odczyta window.location i wstawi to hasło do zapytania AJAX (w nagłówku Authorization). Couch udziela pozwolenia, a użytkownik jest szczęśliwy. Niestety wymagało to trochę prób i błędów; jednak jest to głównie proste programowanie internetowe.

+0

Jason: Czy masz bloga? Chciałbym to przeczytać! – Locohost

+0

Och, jesteś Iriscouch Jason Smith! Przepraszam, że nie wiedziałem tego w swoim ostatnim komentarzu: - / – Locohost

Powiązane problemy