如何在 Loopback 中对 n-level child object 正确定义访问控制?
How to define access control properly on n-level child object in Loopback?
关于在我的模型上定义 ACL 的最佳方法,我绞尽脑汁想了一会儿。
我有一个这样的模型树:
Project -> Issue -> Objective -> Action -> Planning
每个项目都由少数用户管理(一些用户具有 read-only 访问权限,其他人具有完全访问权限)。如果用户与该项目无关,则他无法访问它。每个 child 只知道它的 parent (parentId)。
如何检查用户 X 是否可以访问计划 Y?
我测试了嵌套模型,它工作正常,但只在第一层 (Project -> Issue
)。我已经尝试过 role-resolver,我将所有 parent 模型传递给 Project,但它很丑陋,必须为每个模型完成。
有人告诉我在所有 children 上添加 projectId 属性 但它显然不干净。
非常感谢您的帮助,
蒂埃里
最干净的方法肯定是为每个子对象(Issue、Objective、Action、Planning)定义一个belongsTo
Project
关系。
这样您就可以从环回中利用整个访问控制系统并使用动态角色。
你也可以在没有它的情况下实现角色解析,但正如你所说,它必须为每个模型重复,最终它只是编写更多代码并进行更多查询来完成与关系完全相同的事情。
关于在我的模型上定义 ACL 的最佳方法,我绞尽脑汁想了一会儿。
我有一个这样的模型树:
Project -> Issue -> Objective -> Action -> Planning
每个项目都由少数用户管理(一些用户具有 read-only 访问权限,其他人具有完全访问权限)。如果用户与该项目无关,则他无法访问它。每个 child 只知道它的 parent (parentId)。
如何检查用户 X 是否可以访问计划 Y?
我测试了嵌套模型,它工作正常,但只在第一层 (Project -> Issue
)。我已经尝试过 role-resolver,我将所有 parent 模型传递给 Project,但它很丑陋,必须为每个模型完成。
有人告诉我在所有 children 上添加 projectId 属性 但它显然不干净。
非常感谢您的帮助,
蒂埃里
最干净的方法肯定是为每个子对象(Issue、Objective、Action、Planning)定义一个belongsTo
Project
关系。
这样您就可以从环回中利用整个访问控制系统并使用动态角色。
你也可以在没有它的情况下实现角色解析,但正如你所说,它必须为每个模型重复,最终它只是编写更多代码并进行更多查询来完成与关系完全相同的事情。