首页 > 解决方案 > 使用 Mongoose 实现 ACL 的最佳方法

问题描述

我已经定义并实现了我的数据模型。我可以很容易地手动编写过滤器,为发送查询的用户过滤掉未经授权的结果(其样式为"collection.acl.personId": queryPersonId:)

我的问题是,我应该在哪里以及如何编写这个“东西”以尽可能自动化?我尝试使用自定义查询和静态方法来做到这一点,但两者都没有运气。

静态方法 con:我不想重写所有代码以使用 .then()。我想保留当前的链接。自定义查询:它根本不起作用,即使按照文档。

理想的结果是

Model.findWithAcl(filters).lean()
Model.findOneWithAcl(filters).lean()

请注意,我们使用的是 Typescript。首要任务是让某些东西工作,但拥有工作类型的能力将是紧随其后的第二个优先事项。

谢谢你的帮助

标签: node.jsmongodbmongoosemongoose-schema

解决方案


Casl mongoose 提供了一种非常好的过滤结果(行级别)和集合中的字段的方法。请注意,它也可以在前端使用。

很棒的软件包,可以很好地与 auth0 权限配合使用。

https://casl.js.org/v5/en/guide/intro https://casl.js.org/v5/en/package/casl-mongoose


推荐阅读