【问题标题】:Node.js and ACLNode.js 和 ACL
【发布时间】:2012-12-23 12:10:16
【问题描述】:

我为我的项目选择了 Node.js+Express+Mongoose。到目前为止,我不需要使用 ACL,但在项目的这个阶段我需要实现它。

NPM 包含几个模块,但该选择哪一个?

请告诉我您使用 ACL (Node.js+Express+Mongoose) 的经验。 如果您知道任何教程,那就太好了 :),但它并不是那么需要,我确切需要知道 Node.js 程序员使用什么 ACL。

最后一种可能性是编写自己的 acl 中间件,这对我来说可能是有趣的经历。我想:)

【问题讨论】:

  • 你也可以试试 Casbin:github.com/casbin/node-casbin。支持ACL、RBAC、ABAC等多种访问控制模型,我觉得比现在的acl模块更强大更灵活。

标签: node.js express mongoose acl


【解决方案1】:

https://npmjs.org/package/acl

最常用的 ACL 模块。它也有用于保护资源和 mongo 支持的 Express 中间件..

更新 9.2020:

【讨论】:

  • 有人测试过这个性能吗?我想知道它的编写效率如何。
  • 回答我自己的评论:断言快如闪电!但是当询问用户对资源的所有权限时,在一个中等大小的数据集(数百个用户和数千个资源)上大约需要 12 秒。我尝试了 Neo4j,它在 10 倍大的数据集上以约 100 毫秒的时间返回相同的操作。
  • @EricOlson 指的是npmjs.com/package/graph-acl,来自 Google 的用户。
  • 实际上,@GajusKuizinas,我在 Neo4j 上使用了自己的 acl 实现。我什至不知道已经存在使用图表的包。 NPM 拥有一切……我应该知道 :)
  • @Interactionist 为了让您了解我的方法,请参阅this SO question 我在图学习开始时提出的问题。这是一个基本模型示例。断言成为 DAG 图问题。我有用户层次树和资源树。它们与权限边缘相连。您可以在那里看到 Linda 可以读取 eVar33 资源(感谢她在 Media Mgmt 组中的成员身份),因为有一条从 Linda 到 eVar33 的路径,其中权限边缘包含 read:true。我认为图表是 ACL 的一种自然方法。
【解决方案2】:

acl 软件包在过去 2 年内没有更新。我是 CASL 的作者 - JavaScript 的同构权限管理 - https://github.com/stalniy/casl

根据 npm 趋势,它是当今最常用的库 - https://www.npmtrends.com/acl-vs-@casl/ability

顺便说一句,它使与 MongoDB 和 mongoose 的集成非常容易!

【讨论】:

  • 另外,我目前正在研究对 SQL 数据库的支持。请继续关注!
  • 除了支持aclcasl 之外,您能告诉我区别吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多