1

假设我有复杂的用户管理系统。在这种情况下,用户可以与组相关,组可以与角色相关。此外,组可以包含其他组。

我假设在“帐户管理”情况下,当前用户不能失去允许执行“帐户管理”过程的角色。我想知道如何实现该用例的最佳方式。

让我们尝试考虑简单的场景:例如,在下面的层次结构中,用户通过组 G3 和 G5 与我们的角色连接。

---USER---
|        |
G1       G3----
|        |    |
G2       G5   G6
         |
   REQUIRED_ROLE

在 G3 组版期间,有人尝试将 G3 组成员更改为 G7(为了简化无角色)

---USER---
|        |
G1       G3----
|        |    |
G2       G7   G6

提交该更改将从用户层次结构中删除“帐户管理”角色,并且用户将无法编辑帐户。

我唯一的想法是将所有组和角色读入内存并尝试手动更改所有依赖项以检查提交后是否仍会分配角色。但该解决方案可能会成为未来潜在错误的来源,而且并不优雅。有谁知道如何以优雅的方式解决它?

4

1 回答 1

0

因为这是一个重要的用例,所以您不能使用常规的完整性约束。您必须执行预提交触发器以扫描层次结构并确定用户具有所需的权限。如果不是,则抛出异常。

于 2013-01-27T20:12:31.477 回答