2011-02-10 15 views

risposta

14

Con Apache CouchDB, l'autorizzazione di lettura è per-database, non per documento. Se un utente può recuperare un documento da un database, l'utente può recuperare anche _all_docs?include_docs=true.

Ho scritto dettagli in questa domanda su CouchDB read authorization.

ci sono alcuni approcci:

  1. Layer-7 firewall o proxy inverso HTTP. Questo è difficile da fare correttamente; IMO non è fattibile per la maggior parte. Devi essere molto familiare con l'API di CouchDB per assicurarti che ogni possibile query sia bloccata (ad esempio, _rewrite aggirando il tuo filtro).

  2. Un database per utente. Questa è la soluzione nativa di CouchDB. La creazione di database è molto economica. Quindi, replicare i documenti che l'utente può visualizzare nel proprio database. L'utente ha bisogno di una password sul divano o di un account OAuth.

  3. Ho avuto successo recentemente con i database per utente ma anche una chiave univoca nell'URL che garantisce loro l'accesso immediato. Sembra la cosa che vuoi, tuttavia sotto il cofano sto solo creando account usa e getta con password casuali. Il collegamento passa a una pagina pubblica come www.example.com/pastebin/index.html?doc_id=some_docid&secret=random_secret. Quindi Javscript sul browser legge window.location e inserisce tale password nella query AJAX (in un'intestazione Autorizzazione). Il divano concede il permesso e l'utente è felice. Sfortunatamente, questo ha richiesto un po 'di prove ed errori; tuttavia è per lo più semplice programmazione web.

+0

Jason: Hai un blog? Mi piacerebbe leggerlo! – Locohost

+0

Oh, sei Iriscouch Jason Smith! Mi scuso per non averlo saputo nel mio ultimo commento: - / – Locohost

Problemi correlati