Benutzer Anmeldung in Couchapp / CouchDB durch jquery.couch.js oder sonst

8

Hintergrund

Im Moment versuche ich, eine App mit couchDB / coachapp zu erstellen, die persistente und wichtige Informationen vom Benutzer speichert und die Schritte für die Benutzeranmeldung mit couchapp festhält.

Im Wesentlichen möchte ich ein einfaches Anmeldeformular erstellen, mit dem Nutzer ein Konto für die Verwendung meiner App registrieren können. Dies würde die Erstellung eines neuen Benutzers in der Datenbank couchdb_users und die Erstellung einer neuen Datenbank mit dem neuen Benutzer, der die Rolle des Datenbankadministrators zugewiesen wird, zur Folge haben.

All das erfordert Server Admin-Anmeldedaten.

Im Idealfall würde ich gerne mit einer der Funktionen jquery.couch.js telefonieren können, aber es scheint keine sichere Methode dafür zu geben. (oder gibt es ??)

Frage

Was ist der effizienteste und sicherste Weg, um diese Aufgabe auf eine Middle-Layer-Software oder anderweitig zu übertragen?

Mit effizient, ich meine, die geringste Anzahl von Schritten für den Benutzer, nicht unbedingt die geringste Menge an Ärger für mich.

Im Moment habe ich einen separaten node.js-Server eingerichtet, der Anmeldeanforderungen empfängt. Die Anmeldedaten meines CouchDB-Servers werden als vermeintlich private Variablen im Knoten server.js file gespeichert. Ich poste dann irgendeine DB-Erstellungsanfrage zurück zu couchDB mit couch-client .

Springe ich hier durch zu viele (potentiell unsichere) Reifen? Gibt es einen besseren Weg, einen sicheren Anmeldeprozess zu gewährleisten?

Danke.

    
Tan Yew Wei 14.03.2011, 22:46
quelle

2 Antworten

4

Ein Administrator muss eine Datenbank erstellen und Datenbankadministratoren zuweisen.

Dominics Antwort ist großartig. Eine Alternative ist jedoch, die direkte Coachapp-Architektur beizubehalten und Ihren Admin-Code external außerhalb der Benutzer-Couch-Kette auszuführen.

Stellen Sie beispielsweise in NodeJS eine Verbindung zu CouchDB als Administrator her. Abfrage /_users/_changes?feed=continuous&include_docs=true . Sie erhalten ein Ereignis Daten in Echtzeit, wenn Benutzer erstellt werden. Wenn Sie einen neuen Benutzer sehen, erstellen Sie die Datenbank und weisen Sie sie als Administrator zu.

Der Client-Code kann nach der neuen Datenbank abfragen. Oder der Client kann /_users auch über den _changes COMET-Feed abfragen. Sobald der Browser weiß, dass das Konto eingerichtet wurde, können Sie es dem Benutzer auf der Benutzeroberfläche anzeigen.

Proxies (3-Layer-Architektur) sind großartig. Es gibt nichts, was sie nicht tun können. Allerdings bevorzuge ich die Architektur von "CouchDB mit einem externen Agenten" aus zwei Gründen:

  1. Es ist einfach. Es gibt einen Webserver. Benutzer stellen eine Verbindung zu CouchDB her. Du verbindest dich mit CouchDB. Alles ist in der Datenbank. Es gibt weniger Konfigurations- und Wartungsprobleme.
  2. Es ist flexibel. Sie können den externen Client in einer beliebigen Sprache schreiben, die von einem beliebigen Server ausgeführt wird. Sie schreiben eine große App, um alles zu tun, oder viele kleine Apps, um sich auf jeweils eine Aufgabe zu konzentrieren (z. B. neue Datenbanken erstellen, Benutzer per E-Mail nach verlorenen Passwörtern benachrichtigen, Sie benachrichtigen, wenn eine Datenbank zu groß ist usw.).
JasonSmith 15.03.2011 03:48
quelle
3

Ich habe node.js so verwendet, wie Sie es beschreiben. Es unterscheidet sich nicht von der Verwendung von Middleware wie PHP für die Kommunikation mit MySQL. So robust wie die API für CouchDB ist, ist es immer noch eine gute Idee, etwas anderes in der Mitte zu verwenden, damit Inhalte ohne die Notwendigkeit von AJAX bereitgestellt werden können. (vor allem, wenn Sie etwas komplizierteres als eine einzelne Entität oder eine Liste von Entitäten benötigen)

Wenn Sie sich für eine direkte CouchApp entscheiden, müssen Sie einen Proxy-Server verwenden, um HTTPS-Anfragen an den CouchDB-Server selbst weiterzuleiten. ( Nginx und Apache sind häufige Beispiele für diesen Anwendungsfall. Wenn Sie das nicht verwenden können, gibt es einen Artikel im Wiki über das Hinzufügen einer Verschlüsselungsschicht zur Clientseite. Ich habe auf dem Wiki herausgefunden, dass native SSL-Unterstützung mit v1.1 hinzugefügt wird (und im Stamm des Quelle)

(Übrigens, all diese Artikel sind mir über " Anleitungen " im CouchDB-Wiki) aufgefallen.

    
Dominic Barnes 15.03.2011 00:56
quelle

Tags und Links