2013-07-06 3 views
5

Mein Ziel ist es, in der Lage zu sein, eine Datenbank zu lesen, ohne den Benutzer authentifizieren zu müssen. Eine Authentifizierung zur Bearbeitung dieser Datenbank sollte erforderlich sein. Alle anderen Datenbanken sollten nur für gültige Benutzer les- und schreibbar sein. Und ich möchte nicht, dass ich es für jede Datenbank, die ich in Zukunft erstellen muss, festlegen muss, die Authentifizierung, die für das Lesen/Schreiben erforderlich ist, sollte die Standardeinstellung sein.Wie kann ich eine CouchDB-Datenbank für die Öffentlichkeit lesbar machen, während require_valid_user auf true gesetzt ist?

Ich dachte, ich könnte dies tun, indem require_valid_user auf true setzen, aber jetzt fragt CouchDB immer nach Benutzername und Passwort, also brauche ich eine Möglichkeit, eine Datenbank auszuschließen. Diese Datenbank sollte für öffentliche Benutzer lesbar und dann für gültige Benutzer schreibbar sein.

Antwort

4

Ich umgehen dieses Problem durch die Authentifizierung aller Benutzer über eine einzige Datenbank (d. H./Login). Diese Datenbank ist öffentlich und enthält ein Designdokument mit einer HTML-Datei als Anhang. Der Benutzer erhält diese Datei, füllt seine Anmeldeinformationen in einem Formular aus und ich benutze jQuery.couch.js, um einen Cookie in seinem Browser zu authentifizieren und zu speichern. Sobald sie eine gültige Anmeldung haben, überprüfe ich das userCtx-Objekt, um ihre Rolle zu überprüfen, und leite sie an die entsprechende Datenbank um.

Es ist ein Hack, aber bis CouchDB in der Lage ist, eine Login-Seite anstelle einer JSON-Fehlermeldung zu liefern, wenn Sie nicht in einer Datenbank angemeldet sind, ist es die einzige zuverlässige Methode, die ich gefunden habe.

Stellen Sie sicher, dass Ihre öffentliche Login-Datenbank mit einem validate_doc_update-Schlüssel im Design-Dokument geschützt ist, sodass niemand außer Admins alles darin überschreiben kann.

Hoffe, das hilft.

Verwandte Themen