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

我正在为一个内部企业软件平台构建一个多页面管理界面。考虑许多将各种 API、 db 查询和 shell 脚本绑定在一起的粘合逻辑。

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

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

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

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

46625 次浏览

下面是一些开始的信息:

希望这样开始容易些。

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

  • 认证: 护照卫星,如果在 AngularJS 中开发 SPA (前端)。

  • 授权码: 前十字韧带。基于角色的方法和 REST API 安全性。我想提到 小木屋,如果你想使用 RABC,ABAC 以及。

其次,您希望在 NodeJs 中使用一些实现和开发方法。

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

  • Express 您可以使用 Express 并设计自己的自定义 MVC 项目结构。这也是受欢迎的和强大的。你可以在 < a href = “ http://Yeoman.io/”rel = “ norefrer”> Yeoman 上找到同样受欢迎的种子项目

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

  • 您可以使用 雷迪斯Socket.io来创建实时特性,如 地理位置、用户存在(在线/离线)、聊天、推送通知等等。

  • 水线.因为它的查询方法很简单。它也是 SailsJs 的内置和默认 ORM。如果不使用 SailsJs,也可以使用 结束。我建议使用 DB 提供程序提供的本机连接器。

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

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

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

我认为 节点-授权也是一个不错的选择。这个想法借鉴了 SAP (ERP 提供商) ,它是一个面向对象的授权。它还可以与其他框架(如 Passport 和 Express)一起使用。

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