2013-07-06 2 views
5

Il mio obiettivo è essere in grado di leggere un database senza dover autenticare l'utente, dovrebbe essere richiesta l'autenticazione per la modifica di questo database. Tutti gli altri database dovrebbero essere letti/scrivibili solo per utenti validi. E non voglio doverlo impostare per ogni database che creo in futuro, l'autenticazione richiesta per lettura/scrittura richiesta dovrebbe essere l'impostazione predefinita.Come posso rendere leggibile un database CouchDB pubblico mentre si imposta require_valid_user su true?

Ho pensato di poterlo fare impostando require_valid_user su true, ma ora CouchDB richiede sempre nome utente e password, quindi ho bisogno di un modo per escludere un database. Questo database dovrebbe essere leggibile per pubblico e scrivibile per utenti validi allora.

risposta

4

Ho risolto questo problema autenticando tutti gli utenti attraverso un singolo database (ovvero/login). Tale database è pubblico e contiene un documento di progettazione con un file HTML come allegato. L'utente riceve questo file, compila le sue credenziali su un modulo e io uso jQuery.couch.js per autenticare e memorizzare un cookie nel browser. Una volta che hanno un accesso valido, ispeziono l'oggetto userCtx per verificare il loro ruolo e reindirizzarlo al database appropriato.

È un hack, ma finché CouchDB non è in grado di servire una pagina di accesso invece di un messaggio di errore JSON ogni volta che non si accede a un database, è l'unico metodo affidabile che ho trovato.

Assicurati di proteggere il tuo database di accesso pubblico con una chiave validate_doc_update nel documento di progettazione, in modo che nessuno tranne gli amministratori possa sovrascrivere qualsiasi cosa al suo interno.

Spero che questo aiuti.