Chciałbym, aby ludzie mogli udostępniać dokumenty prywatnie, używając linku z losowym identyfikatorem, tak jak dostaję się po opublikowaniu prywatnego linku do pastebin. Chcę wiedzieć zarówno dla CouchDB, jak i dla Cloudant w ogóle.Czy mogę ograniczyć nieuwierzytelnionym użytkownikom dostęp do _all_docs?
Odpowiedz
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ść:
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).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.
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 odczytawindow.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.
Jason: Czy masz bloga? Chciałbym to przeczytać! – Locohost
Och, jesteś Iriscouch Jason Smith! Przepraszam, że nie wiedziałem tego w swoim ostatnim komentarzu: - / – Locohost