Node.js应用程序的授权方法和设计模式

时间:2012-11-24 22:23:49

标签: security node.js design-patterns express authorization

我正在为内部企业软件平台构建一个多页面管理界面。想想许多粘合逻辑将各种API,数据库查询和shell脚本捆绑在一起。

我们将使用node.js,快速框架(包括jade模板)和LDAP进行身份验证。

我正在努力寻找有关节点应用程序授权的设计模式和最佳实践的信息。最好,我想使用基于角色的模型,因为我的用户熟悉这种方法及其照顾和喂养。

我是node.js的新手,所以请不要假设我已经看过一个模块或热门博客文章。可能有大量的信息,我根本不知道在哪里看。

提前感谢您提供的任何信息!

4 个答案:

答案 0 :(得分:56)

根据您的第一个问题,您需要在NodeJ中实施一些授权流程。我已经探索并使用了许多NodeJs的API。我更喜欢为企业应用程序使用API​​。

  • 对于身份验证:PassportSatellizer如果在AngularJS中开发SPA(前端)。

  • 授权:ACL。基于角色的方法和REST API安全性。

其次,您需要NodeJ中的一些实现和开发方法。

  • Easy和我最喜欢的设计模式和NodeJs框架:MVC框架,SailsJs。为其准备启动和模块化架构。从长远来看,代码管理很容易(企业应用程序的最实际要求)。易于维护。 SailsJs还预先配置了Socket.io,使用它可以在项目中创建实时模块,小部件和聊天小部件。

  • Express您可以使用Express并设计自己的自定义MVC项目结构。这也很受欢迎和强大。您可以在Yeoman

  • 上找到相同的热门种子项目
  • Redis作为缓存或会话层。使用单独的缓存或会话层总是好的,因为它不会阻止您将应用程序在云上扩展到第n个实例。

  • 您可以使用RedisSocket.io创建实时功能,例如Geo-location,用户在线状态(在线/离线),聊天,推送通知等等

  • ORM:Waterline。因为它易于查询的方法。它也是SailsJs的内置和默认ORM。如果不使用SailsJ,您也可以使用Sequelizejs。我建议使用数据库提供商提供的本机连接器。

  • 数据库:根据您的要求。 Waterline ORM支持PostgreSQL,MySQL,MongoDB等等。

  • 我最喜欢的视图引擎:EJS。无需学习用于开发表示层的新内容。它也是SailsJs的内置和默认视图引擎,这就是为什么我是SailsJs的粉丝。

我认为,我已经介绍了在NodeJs中创建企业应用程序的所有重要信息。我不说,上面的软件包是最好的,但是在协作方面,它们最适合任何企业场景。还有其他已知的包,您可以根据自己的要求使用它。

答案 1 :(得分:14)

以下是一些入门信息:

希望能让你更容易入手。

答案 2 :(得分:1)

我应该说Node-Authorization也是一个很好的候选人。这个想法来自SAP(ERP提供商),它是一个面向对象的授权。它还可以作为其他框架的伴奏使用,例如:Passport和Express。

答案 3 :(得分:1)

另一种选择是使用与MongoDB非常好的CASL。还有一篇文章介绍如何将基于CASL的授权迭代到expressjs应用程序 - https://medium.com/@sergiy.stotskiy/authorization-with-casl-in-express-app-d94eb2e2b73b