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.
- 1. Zezwalaj na dostęp nieuwierzytelnionym użytkownikom do określonej strony przy użyciu uwierzytelniania formularzy ASP.Net
- 2. Jak mogę ograniczyć dostęp zdalny do Elmah?
- 3. Serwer SQL: czy możesz ograniczyć dostęp tylko do jednej tabeli
- 4. Jak ograniczyć dostęp do aktywnego administratorowi administratorami
- 5. Administrator Django - czy można ograniczyć dostęp użytkownika tylko do jego własnych danych wejściowych?
- 6. Czy mogę ograniczyć liczbę znaków w TextView?
- 7. Czy mogę ograniczyć rozmiar kubełka S3?
- 8. Czy mogę ograniczyć długość tablicy w JavaScript?
- 9. Nie zezwalaj anonimowym użytkownikom na dostęp do sonaru
- 10. Jak ograniczyć dostęp do strony tylko do localhost?
- 11. Jak ograniczyć dostęp do zagnieżdżonego elementu klasy do otaczającej klasy?
- 12. Czy mogę ograniczyć wysokość WPF TextBlock do dwóch linii?
- 13. Czy mogę ograniczyć metodę ogólną do więcej niż jednego interfejsu?
- 14. Czy mogę ograniczyć dziedziczenie do pakietu bez używania "domyślnego"?
- 15. Administrator Django - dając użytkownikom dostęp do konkretnych obiektów/pól?
- 16. Jak ograniczyć dostęp do panelu administracyjnego w ravendb?
- 17. Jak ograniczyć dostęp do plików o określonych rozszerzeniach w ASP.NET?
- 18. Jak ograniczyć dostęp do tras w routerze reagowania?
- 19. Chosen.js - czy można ograniczyć liczbę wybranych elementów?
- 20. Jak ograniczyć dostęp do niektórych stron w ASP.NET MVC?
- 21. Jak ograniczyć dostęp do głównego oddziału na git
- 22. .htaccess: jak ograniczyć dostęp do pojedynczego pliku przez IP?
- 23. uprawnienia MongoDB: ograniczyć dostęp do dwóch baz danych
- 24. Jak ograniczyć dostęp do usługi WCF za pomocą klucza wspólnego
- 25. Jak mogę ograniczyć Java Generics
- 26. Jak mogę ograniczyć dostęp do niektórych adresów URL przez źródłowy adres IP w Tomcat?
- 27. Czy mogę ograniczyć ilość obiektów System.Threading.Tasks.Task, które działają jednocześnie?
- 28. Czy mogę zablokować lub ograniczyć kraj na podstawie adresu IP?
- 29. Czy mogę ograniczyć parametr ogólny, aby * nie * było opcjonalne?
- 30. Czy Google zapewnia użytkownikom testowym do testowania integracji
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