84

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

我们将使用 node.js、express 框架(包括 Jade 模板)和 LDAP 进行身份验证。

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

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

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

4

4 回答 4

66

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

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

  • 对于授权:ACL。方法和 REST API 上基于角色的安全性。如果您也想使用 RABC、ABAC,我想提一下casbin 。

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

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

  • Express您可以使用 Express 并设计自己的自定义 MVC 项目结构。这也是流行和强大的。你可以在Yeoman上找到相同的热门种子项目

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

  • 您可以使用RedisSocket.io创建实时功能,例如地理位置、用户状态(在线/离线)、聊天、推送通知等等。

  • ORM:水线。由于其简单的查询方法。它也是 SailsJs 的内置和默认 ORM。如果不使用SailsJs ,您也可以使用 Sequelizejs。我建议使用数据库提供商提供的本机连接器。

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

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

我想,我已经涵盖了在 NodeJs 中创建企业应用程序的所有重要信息。我并不是说,以上软件包是最好的,但是通过协作,它们可以最适合任何企业场景。还有其他已知的包,大家可以根据自己的需求使用。

于 2014-07-13T13:02:51.350 回答
17

以下是一些入门信息:

希望这会让开始变得更容易。

于 2012-11-27T08:13:28.827 回答
4

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

于 2017-07-26T11:18:16.357 回答
1

我应该说节点授权也是一个不错的选择。这个想法是从SAP(ERP提供商)借来的,它是一种面向对象的授权。它也可以用作其他框架的伴奏,例如:Passport 和 Express。

于 2017-02-04T12:55:22.303 回答