web-dev-qa-db-fra.com

Approches d'autorisation et modèles de conception pour les applications Node.js

Je construis une interface d'administration de plusieurs pages pour une plate-forme logicielle d'entreprise interne. Réfléchissez à la logique de la liaison qui lie diverses API, requêtes de base de données et scripts Shell.

Nous utiliserons node.js, le cadre express (y compris les modèles de jade) et LDAP pour l'authentification.

J'ai du mal à trouver des informations sur les modèles de conception et les meilleures pratiques pour l'autorisation dans les applications de nœud. De préférence, j'aimerais utiliser le modèle basé sur les rôles car mes utilisateurs sont familiers avec cette approche, ainsi que ses soins et son alimentation.

Je suis nouveau sur node.js, donc n’allez pas croire que j’ai déjà vu un module ou un article de blog populaire. Il est probable qu'il existe une mine d'informations et je ne sais tout simplement pas où chercher.

Merci d'avance pour toute information que vous êtes en mesure de fournir!

73
Dave Snigier

Conformément à votre première question, vous souhaitez une mise en œuvre du processus d'autorisation dans NodeJs. J'ai exploré et utilisé plusieurs API de NodeJs. Je préférerais suivre les API pour les applications d'entreprise.

  • Pour l'authentification: Passport ou Satellizer si vous développez SPA (interface) en AngularJS.

  • Pour l'autorisation: ACL . Sécurité basée sur les rôles sur les méthodes et les API REST.

Deuxièmement, vous souhaitez une approche de mise en œuvre et de développement dans NodeJs.

  • Facile et mon modèle de conception préféré et Framework pour NodeJs: framework MVC, SailsJs . Pour son architecture prête à l'emploi et modulaire. La gestion du code est facile à long terme (exigence la plus pratique pour une application d'entreprise). Entretien facile. SailsJs est également préconfiguré avec Socket.io , à l’aide duquel vous pouvez créer des modules en temps réel, des widgets, des widgets de discussion avec votre projet.

  • Express Vous pouvez utiliser Express et concevoir votre propre structure de projet MVC personnalisée. Ceci est également populaire et robuste. Vous pouvez trouver des projets de semences populaires de même sur Yeoman

  • Redis En tant que couche de mise en cache ou de session. Il est toujours bon d’utiliser la mise en cache séparée ou la couche de session, car cela ne vous empêchera pas de redimensionner votre application sur le cloud. 

  • Vous pouvez utiliser Redis et Socket.io pour créer des fonctions en temps réel telles que Géolocalisation , la présence de l'utilisateur (en ligne/hors ligne), le chat, les notifications Push, etc.

  • ORM: Ligne de flottaison . Pour son approche d'interrogation facile. C'est également l'ORM intégré et par défaut de SailsJs. Vous pouvez également utiliser Sequelizejs , si vous n’utilisez pas SailsJs. Je recommanderais d'utiliser des connecteurs natifs fournis par les fournisseurs de base de données.

  • Base de données: selon vos besoins. Waterline ORM prend en charge PostgreSQL, MySQL, MongoDB et plus encore.

  • Mon moteur de vue préféré: EJS . Pas besoin d'apprendre de nouvelles choses pour développer votre couche de présentation. C'est aussi le moteur d'affichage par défaut et intégré de SailsJs, c'est pourquoi je suis un fan de SailsJs.

Je pense avoir couvert toutes les informations importantes pour créer une application d'entreprise dans NodeJs. Je ne dis pas que les packages ci-dessus sont les meilleurs, mais en collaboration, ils peuvent être adaptés à tout scénario d'entreprise. Il existe d'autres packages connus, que vous pouvez utiliser selon vos besoins.

51
Amreesh Tyagi

Voici quelques informations pour commencer:

J'espère que cela facilite le démarrage.

14
zemirco

Je devrais dire Node-Authorization est également un bon candidat. L'idée est empruntée à SAP (fournisseur ERP), il s'agit d'une autorisation orientée objet. Et il peut également être utilisé comme accompagnement avec d'autres frameworks tels que: Passport et Express.

1
Kai Zhang

Une autre option consiste à utiliser CASL qui est très bien intégré à MongoDB. Il existe également un article expliquant comment intégrer une autorisation basée sur CASL à une application expressjs - https://medium.com/@sergiy.stotskiy/authorization-with-casl-in-express-app-d94eb2e2b73b

0
Sergii Stotskyi