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

80

Ich erstelle eine mehrseitige Administrationsoberfläche für eine interne Unternehmenssoftwareplattform. Denken Sie an viel Klebelogik, die verschiedene APIs, Datenbankabfragen und Shell-Skripte miteinander verbindet.

Wir werden node.js, das Express-Framework (einschließlich Jade-Vorlagen) und LDAP zur Authentifizierung verwenden.

Ich habe Probleme, Informationen zu Entwurfsmustern und Best Practices für die Autorisierung in Knotenanwendungen zu finden. Vorzugsweise möchte ich das rollenbasierte Modell verwenden, da meine Benutzer mit diesem Ansatz und seiner Pflege und Fütterung vertraut sind.

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

Vielen Dank im Voraus für alle Informationen, die Sie zur Verfügung stellen können!

Dave Snigier
quelle

Antworten:

63

Gemäß 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 es vorziehen, APIs für Unternehmensanwendungen zu verwenden.

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

  • Für die Autorisierung: ACL . Rollenbasierte Sicherheit auf Methoden und REST-APIs. Ich möchte casbin erwähnen, wenn Sie auch RABC, ABAC verwenden möchten.

Zweitens möchten Sie einen Implementierungs- und Entwicklungsansatz in NodeJs.

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

  • Express Sie können Express verwenden und Ihre eigene benutzerdefinierte MVC-Projektstruktur entwerfen. Dies ist auch beliebt und robust. Auf Yeoman finden Sie beliebte Saatgutprojekte derselben

  • Redis Als Caching- oder Sitzungsebene. Es ist immer gut, eine separate Caching- oder Sitzungsebene zu verwenden, da Sie dadurch nicht blockiert werden, Ihre Anwendung in der Cloud auf die n-te Instanz zu skalieren.

  • Sie können mit Redis und Socket.io in Echtzeit erstellen Features wie Geo-Standort , Benutzer-Präsenz (online / offline), Chat, Push-Benachrichtigung und vieles mehr.

  • ORM: Wasserlinie . Für seinen einfachen Abfrageansatz. Es ist auch das eingebaute und standardmäßige ORM von SailsJs. Sie können auch Sequelizejs verwenden , wenn Sie SailsJs nicht verwenden. Ich würde empfehlen, native Konnektoren zu verwenden, die von DB-Anbietern bereitgestellt werden.

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

  • Meine Lieblings-View-Engine: EJS . Sie müssen keine neuen Dinge lernen, um Ihre Präsentationsebene zu entwickeln. Es ist auch die eingebaute und Standard-View-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 am besten an jedes Unternehmensszenario angepasst werden. Es gibt andere bekannte Pakete, die Sie je nach Ihren Anforderungen verwenden können.

Amreesh Tyagi
quelle
2
Wasserlinie und Segel.js +1
Travis Webb
@ Kosnkov Die meisten davon sind in Ordnung. In HapiJS finden Sie eine leistungsstärkere Alternative zu Express und in Sequelize eine Alternative zu Waterline. Meiner Meinung nach ist SailsJS übertrieben. Wenn Sie aus einem RAILS- oder Django-Hintergrund stammen, sollten Sie genug Konzept verstehen, um nur mit Express / Hapi und Waterline / Sequelize zurechtzukommen. Es ist viel leichter als Segel. Ich entscheide mich für Hapi / Sequelize.
Damusix
Schöne Liste. Es wäre auch gut, eine kleine Anmerkung zum Brute-Force-Schutz hinzuzufügen. Paket wie Rate-Limiter-Flexible sollte eine gute Passform sein.
Animir
15

Hier sind einige Informationen, um loszulegen:

Ich hoffe, das erleichtert den Start.

Zemirco
quelle
Vielen Dank! Ich werde diese Links überprüfen. Das Express-Route-Middleware-Beispiel scheint dem Anwendungsfall, den ich habe, sehr nahe zu kommen
Dave Snigier
53
Seltsam, dass Ihre Antwort nicht das Wort Autorisierung enthält :)
Redben
1
Perfekte Antwort, hat mir sehr geholfen. Auch ohne das Wort Autorisierung :)
Herr Baudin
0

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

Kai Zhang
quelle