问题描述
在我的应用中,我需要结合两种应该协同工作的不同访问控制机制:角色和状态。
因此用户可以拥有不同的角色,例如 admin
、guest
、teammember
等。这已经通过使用 Role
、角色映射和 {{1} }s.
大约有 10 个不同的雕像,如 ACL
、trial
、onboarding
、beta
等,具有不同的业务逻辑来进行访问控制。
具有不同角色的用户可以具有不同的状态。一个用户只能同时拥有一种状态。
我试图想出一种方法来实现这样的功能,并想到可以通过添加与 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 语句?或者也许是某种状态机?
老实说,出现了多个问题,所以我决定向社区寻求帮助。
当用户可以同时拥有 Status
和 role
访问控制机制时,我需要关于如何实现此类功能的建议。
我应该如何从架构上解决这个问题,特别是在 Loopback 3 中?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)