it-swarm.com.de

Autorisierungsansätze und Entwurfsmuster für Node.js-Anwendungen

Ich baue eine mehrseitige Administrationsoberfläche für eine interne Unternehmenssoftwareplattform. Stellen Sie sich eine Menge Glue-Logik vor, die verschiedene APIs, Datenbankabfragen und Shell-Skripts miteinander verbindet.

Wir verwenden node.js, das Express-Framework (einschließlich Jade-Templates) und LDAP für die Authentifizierung.

Ich habe Schwierigkeiten, Informationen zu Entwurfsmustern und bewährten Methoden für die Autorisierung in Knotenanwendungen zu finden. Ich möchte vorzugsweise das rollenbasierte Modell verwenden, da meine Benutzer mit diesem Ansatz und seiner Pflege und Ernährung vertraut sind.

Ich bin neu bei node.js, also gehe bitte nicht davon aus, dass ich bereits ein Modul oder einen beliebten Blogbeitrag gesehen habe. Es ist wahrscheinlich, dass es eine Fülle von Informationen gibt und ich weiß einfach nicht, wo ich suchen muss.

Vielen Dank im Voraus für alle Informationen, die Sie bereitstellen können!

73
Dave Snigier

Bei Ihrer ersten Frage möchten Sie eine Implementierung des Autorisierungsprozesses in NodeJs. Ich habe die Anzahl der APIs von NodeJs untersucht und verwendet. Ich würde folgende APIs für Unternehmensanwendungen bevorzugen.

  • Zur Authentifizierung: Passport oder Satellizer , wenn SPA (Frontend) in AngularJS entwickelt wird.

  • Für die Autorisierung: ACL . Rollenbasierte Sicherheit für Methoden und REST - APIs.

Zweitens möchten Sie einige Implementierungs- und Entwicklungsansätze in NodeJs.

  • Einfach und mein Lieblingsdesignmuster und Framework für NodeJs: MVC-Framework, SailsJs . Für seine sofort einsetzbare und modulare Architektur. Die Codeverwaltung ist auf lange Sicht einfach (die praktischste Anforderung für eine Unternehmensanwendung). Einfache Wartung SailsJs ist auch mit Socket.io vorkonfiguriert, mit dem Sie Echtzeitmodule, Widgets und Chat-Widgets in Ihrem Projekt erstellen können.

  • Express Sie können Express verwenden und Ihre eigene MVC-Projektstruktur erstellen. Dies ist auch beliebt und robust. Sie finden beliebte Samenprojekte derselben auf Yeoman .

  • Redis Als Caching- oder Sitzungsebene. Es ist immer gut, separate Caching- oder Session-Layer zu verwenden, da Sie dadurch nicht daran gehindert werden, Ihre Anwendung in der Cloud auf n-te Instanzen zu skalieren. 

  • Mit Redis und Socket.io können Sie Echtzeitfunktionen wie Geo-location , Benutzerpräsenz (online/offline), Chat, Push-Benachrichtigung und vieles mehr erstellen.

  • ORM: Wasserlinie . Für die einfache Abfrage. Es ist auch der eingebaute und Standard-ORM von SailsJs. Sie können auch Sequelizejs verwenden, wenn Sie keine SailsJs verwenden. Ich würde empfehlen, native Connectors von DB-Providern zu verwenden.

  • Datenbank: Gemäß Ihrer Anforderung. Waterline ORM unterstützt PostgreSQL, MySQL, MongoDB und mehr.

  • Meine Lieblings-View-Engine: EJS . Sie müssen nichts Neues lernen, um Ihre Präsentationsschicht zu entwickeln. Es ist auch die eingebaute und standardisierte Ansichts-Engine von SailsJs, deshalb bin ich ein Fan von SailsJs.

Ich denke, ich habe alle wichtigen Informationen zum Erstellen einer Enterprise-Anwendung in NodeJs behandelt. Ich sage nicht, dass die oben genannten Pakete am besten sind, aber gemeinsam können sie an jedes Unternehmensszenario angepasst werden. Es sind andere Pakete bekannt, die Sie je nach Ihren Anforderungen verwenden können.

51
Amreesh Tyagi

Hier einige Informationen zum Einstieg:

Hoffe, das macht es einfacher, zu beginnen.

14
zemirco

Eine andere Möglichkeit ist die Verwendung von CASL , das sehr gut in MongoDB integriert ist. Es gibt auch einen Artikel darüber, wie die Autorisierung basierend auf CASL in die expressjs-App integriert werden kann - https://medium.com/@sergiy.stotskiy/authorization-with-casl-in-express-app-d94eb2e2b73b

2
Sergii Stotskyi

Ich sollte sagen, dass Node-Authorization auch ein guter Kandidat ist. Die Idee stammt von SAP (ERP-Anbieter), es handelt sich um eine objektorientierte Berechtigung. Und es kann auch als Begleitung zu anderen Frameworks wie Passport und Express verwendet werden.

1
Kai Zhang