node.js - 使用 Mongoose 实现 ACL 的最佳方法
问题描述
我已经定义并实现了我的数据模型。我可以很容易地手动编写过滤器,为发送查询的用户过滤掉未经授权的结果(其样式为"collection.acl.personId": queryPersonId
:)
我的问题是,我应该在哪里以及如何编写这个“东西”以尽可能自动化?我尝试使用自定义查询和静态方法来做到这一点,但两者都没有运气。
静态方法 con:我不想重写所有代码以使用 .then()。我想保留当前的链接。自定义查询:它根本不起作用,即使按照文档。
理想的结果是
Model.findWithAcl(filters).lean()
Model.findOneWithAcl(filters).lean()
请注意,我们使用的是 Typescript。首要任务是让某些东西工作,但拥有工作类型的能力将是紧随其后的第二个优先事项。
谢谢你的帮助
解决方案
Casl mongoose 提供了一种非常好的过滤结果(行级别)和集合中的字段的方法。请注意,它也可以在前端使用。
很棒的软件包,可以很好地与 auth0 权限配合使用。
https://casl.js.org/v5/en/guide/intro https://casl.js.org/v5/en/package/casl-mongoose
推荐阅读
- rethinkdb - 即使指定了数据库名称,rethinkdb Web 界面错误也在寻找其他数据库
- isabelle - 枚举集合元素的归纳谓词
- shell - 处理 awk 结果除以零内的变量
- sql-server - 如何获取服务器上的所有 SQL 扩展事件会话?
- amazon-web-services - AWS EC2 实例被锁定 - 忘记 ssh 根密码?
- apache-kafka - 无法在 Windows 中使用 kafka cmd 创建消费者
- spring - Spring如何接收和回复
- python - 复选框总是在弹出窗口中读取 0 - Tkinter
- java - 并行 JobSteps 的 HSQLDB 序列化错误
- java - 如何在java中随时获取完整单词以使用缩写