Mögliches Duplikat:
Schreiben von "serverlosen" Webanwendungen
Nehmen wir also an, ich werde einen Stack Exchange-Klon erstellen und beschließe, so etwas wie CouchDB als Backend-Speicher zu verwenden. Wenn ich deren integrierte Authentifizierung und Autorisierung auf Datenbankebene verwende, gibt es einen Grund, das clientseitige Javascript nicht direkt auf den öffentlich verfügbaren CouchDB-Server schreiben zu lassen? Da es sich im Grunde genommen um eine CRUD-Anwendung handelt und die Geschäftslogik aus "Nur der Autor kann seinen Beitrag bearbeiten" besteht, sehe ich keine große Notwendigkeit, eine Schicht zwischen dem clientseitigen Material und der Datenbank zu haben. Ich würde einfach die Validierung auf der CouchDB-Seite verwenden, um sicherzustellen, dass niemand Garbage-Daten einfügt, und um sicherzustellen, dass die Berechtigungen richtig festgelegt sind, sodass Benutzer nur ihre eigenen _user-Daten lesen können. Das Rendern würde clientseitig von AngularJS durchgeführt. Im Grunde könnten Sie nur einen CouchDB-Server und ein paar "statische" Seiten haben und schon kann es losgehen. Sie würden keine serverseitige Verarbeitung benötigen, nur etwas, das die HTML-Seiten bedienen könnte.
Das Öffnen meiner Datenbank für die Welt scheint falsch, aber in diesem Szenario kann ich mir nicht vorstellen, warum, solange die Berechtigungen richtig festgelegt sind. Das widerspricht meinem Instinkt als Webentwickler, aber mir fällt kein guter Grund ein. Warum ist das eine schlechte Idee?
BEARBEITEN: Sieht so aus, als gäbe es hier eine ähnliche Diskussion: Schreiben von Anwendungen ohne Webserver
EDIT: Tolle Diskussion bisher, und ich freue mich über das Feedback aller! Ich denke, ich sollte ein paar allgemeine Annahmen hinzufügen, anstatt CouchDB und AngularJS speziell aufzurufen. Nehmen wir also an, dass:
- Die Datenbank kann Benutzer direkt aus ihrem versteckten Speicher authentifizieren
- Die gesamte Datenbankkommunikation würde über SSL erfolgen
- Die Datenvalidierung kann (sollte aber vielleicht nicht?) Von der Datenbank übernommen werden
- Die einzige Berechtigung, die wir für andere als die Admin-Funktionen haben, ist, dass nur jemand seinen eigenen Beitrag bearbeiten darf
- Wir sind vollkommen in Ordnung, wenn jeder in der Lage ist, alle Daten zu lesen (AUSSER Benutzerdatensätze, die Passwort-Hashes enthalten können).
- Administrative Funktionen würden durch die Datenbankautorisierung eingeschränkt
- Niemand kann sich einer Administratorrolle hinzufügen
- Die Datenbank ist relativ einfach zu skalieren
- Es gibt wenig bis gar keine echte Geschäftslogik. Dies ist eine grundlegende CRUD-App
DELETE FROM ImportantData;