如何在 Loopback 中正确管理角色和状态作为 ACL?

问题描述

在我的应用中,我需要结合两种应该协同工作的不同访问控制机制:角色和状态。

因此用户可以拥有不同的角色,例如 adminguestteammember 等。这已经通过使用 Role、角色映射和 {{1} }s.

但是现在我需要添加一个访问控制机制:用户状态。

大约有 10 个不同的雕像,如 ACLtrialonboardingbeta 等,具有不同的业务逻辑来进行访问控制。 具有不同角色的用户可以具有不同的状态。一个用户只能同时拥有一种状态。

我试图想出一种方法来实现这样的功能,并想到可以通过添加banned 完全相同的机制来实现它,但名称role。所以我会有一个名为 status 的模型,一个 Status 模型会有一个字段 user,这样我就会得到一个 status_id 关系并且不需要映射模型。

所以这个想法归结为拥有另一组 hasOne 规则以及 ACL 的规则,看起来像这样:

roles

我没有找到任何关于创建自定义 { model: '*',property: 'some_model_method',accesstype: 'EXECUTE/READ/WRITE',principalType: 'STATUS',// "STATUS" instead of "ROLE" principalId: '$onboarded',permission: 'ALLOW' }, 的相关信息,但感觉应该是可能的。

但是我不确定这是否是解决问题的正确方法。它可扩展吗?将来是否容易支持此类代码?够灵活吗?我是否会因为这种方法而受到 principalType 的困扰,以至于我的 acl 列表对于我的模型来说会变得很大?

或者这一切只是使问题过于复杂,而我只需要另一个名为 acls 的表和我的代码中的一堆 if-else 语句?或者也许是某种状态机?

老实说,出现了多个问题,所以我决定向社区寻求帮助。

用户可以同时拥有 Statusrole 访问控制机制时,我需要关于如何实现此类功能的建议。

我应该如何从架构上解决这个问题,特别是在 Loopback 3 中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...