Enfoques de autorización y patrones de diseño para aplicaciones Node.js [cerrado]

80

Estoy construyendo una interfaz de administración de varias páginas para una plataforma de software empresarial interna. Piense en un montón de lógica de pegamento para vincular varias API, consultas de base de datos y scripts de shell.

Usaremos node.js, el marco expreso (incluidas las plantillas de jade) y LDAP para la autenticación.

Estoy luchando por encontrar información sobre los patrones de diseño y las mejores prácticas para la autorización en aplicaciones de nodo. Preferiblemente, me gustaría usar el modelo basado en roles ya que mis usuarios están familiarizados con ese enfoque y su cuidado y alimentación.

Soy nuevo en node.js, así que no asuma que ya he visto un módulo o una publicación de blog popular. Es probable que haya mucha información y simplemente no sé dónde buscar.

¡Gracias de antemano por cualquier información que pueda proporcionar!

Dave Snigier
fuente

Respuestas:

63

Según su primera pregunta, desea implementar algún proceso de autorización en NodeJs. He explorado y utilizado varias API de NodeJs. Preferiría seguir las API para aplicaciones empresariales.

  • Para autenticación: Passport o Satellizer si está desarrollando SPA (front-end) en AngularJS.

  • Para autorización: ACL . Seguridad basada en roles en métodos y API REST. Me gustaría mencionar casbin si desea utilizar RABC, ABAC también.

En segundo lugar, desea algún enfoque de implementación y desarrollo en NodeJs.

  • Fácil y mi patrón de diseño favorito y Framework para NodeJs: MVC framework, SailsJs . Por su arquitectura modular y lista para comenzar. La gestión del código es fácil a largo plazo (requisito más práctico para una aplicación empresarial). Facil mantenimiento. SailsJs también está preconfigurado con Socket.io , con el que puede crear módulos en tiempo real, widgets, widgets de chat en su proyecto.

  • Express Puede utilizar Express y diseñar su propia estructura de proyecto MVC personalizada. Esto también es popular y robusto. Puede encontrar proyectos de semillas populares del mismo en Yeoman

  • Redis Como capa de caché o de sesión. Siempre es bueno utilizar un almacenamiento en caché o una capa de sesión separados, ya que no le impedirá escalar su aplicación en la nube a instancias n.

  • Puede usar Redis y Socket.io para crear funciones en tiempo real como ubicación geográfica , presencia de usuarios (en línea / fuera de línea), chat, notificaciones push y muchas más.

  • ORM: Línea de flotación . Por su sencillo enfoque de consulta. También es el ORM incorporado y predeterminado de SailsJs. También puede usar Sequelizejs , si no usa SailsJs. Recomendaría utilizar conectores nativos proporcionados por proveedores de bases de datos.

  • Base de datos: según su requisito. Waterline ORM es compatible con PostgreSQL, MySQL, MongoDB y más.

  • Mi motor de vista favorito: EJS . No es necesario aprender cosas nuevas para desarrollar su capa de presentación. También es el motor de visualización incorporado y predeterminado de SailsJs, por eso soy fanático de SailsJs.

Creo que he cubierto toda la información importante para crear una aplicación empresarial en NodeJs. No digo que los paquetes anteriores sean los mejores, pero en colaboración, pueden adaptarse mejor a cualquier escenario empresarial. Hay otros paquetes conocidos, que puede utilizar según sus propios requisitos.

Amreesh Tyagi
fuente
2
waterline and sails.js +1
Travis Webb
@kosnkov La mayoría de estos están bien. Consulte HapiJS para obtener una alternativa más poderosa a Express y Sequelize para una alternativa a Waterline. En mi opinión, creo que SailsJS es excesivo. Si tiene experiencia en RAILS o Django, debe comprender el concepto lo suficiente para estar bien con Express / Hapi y Waterline / Sequelize; es mucho más ligero que las velas. Opto por Hapi / Sequelize.
damusix
Buena lista. También sería bueno agregar una pequeña nota sobre la protección de fuerza bruta. Un paquete como rate-limiter-flexible debería encajar bien.
Animir
15

A continuación, se ofrece información para comenzar:

Espero que sea más fácil comenzar.

Zemirco
fuente
¡Gracias! Revisaré esos enlaces. El ejemplo de middleware de ruta rápida parece muy cercano al caso de uso que tengo
Dave Snigier
53
Es extraño que su respuesta no contenga la palabra Autorización :)
redben
1
Respuesta perfecta, me ayudó mucho. Incluso sin la palabra autorización :)
Mr. Baudin
0

Debo decir que la autorización de nodo también es un buen candidato. La idea está tomada de SAP (proveedor de ERP), es una autorización orientada a objetos. Y también se puede utilizar como acompañamiento con otros frameworks como: Passport y Express.

Kai Zhang
fuente