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


80

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

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

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

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

预先感谢您能够提供的任何信息!

Answers:


63

根据第一个问题,您希望在NodeJ中实现一些授权过程。我已经探索并使用了许多NodeJ的API。我希望遵循用于企业应用程序的API。

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

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

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

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

  • Express您可以使用Express并设计自己的自定义MVC项目结构。这也很流行而且很健壮。在Yeoman上可以找到相同的流行种子项目

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

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

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

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

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

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


2
waterline and sails.js +1
Travis Webb

@kosnkov这些大多数都很好。请查看HapiJS,以找到Express的更强大替代品,并为Sequelize替代Waterline的替代品。在我看来,我认为SailsJS过于矫kill过正。如果您是来自RAILS或Django的背景,那么您应该了解足够的概念,以便只使用Express / Hapi和Waterline / Sequelize;与Sails相比,重量更轻。我选择Hapi / Sequelize。
damusix '18年

不错的清单。添加关于暴力保护的小注释也是很好的。像rate-limiter-flexible这样的软件包应该很合适。
Animir

15

以下是一些入门信息:

希望这样可以更轻松地开始。


谢谢!我将检查这些链接。快速路由中间件示例似乎非常接近我的用例
Dave Snigier 2012年

53
奇怪的是您的答案不包含授权一词:)
redben

1
完美的答案,对我有很大帮助。即使没有授权一词:)
鲍丹先生2014年


1
@Green-github.com/ expressjs
express/


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.