【发布时间】:2016-12-25 23:14:42
【问题描述】:
我正在为我的网络应用程序开发角色/权限系统,但我不确定如何构建它。
简单地说。用户可以访问多个项目。这是一个参与,除其他外,一个参与具有一个具有多项权利的配置文件。因此,这些是项目中特定于用户的权利。参与也有一个类型(管理员、支持等)。
配置文件基于角色。角色(可能命名不当)实际上是标准配置文件,具有管理员预先定义的默认权限配置。创建新配置文件时,选择一个角色作为基础,然后,如果需要,可以调整权限。个人资料并非专属于一位用户。
到目前为止,一切都很好(或者不是!你告诉我!)
权利按上下文/主题分组。因此,例如,与“项目任务”有关的所有权利都归为一组。我没有对此建模,因为它是由 UI 处理的(不确定这是否是一件坏事)。
现在我的问题如下。根据参与类型,某些权利是隐含的,不应被禁用。因此,在为“支持”参与创建角色时,“查看我自己的支持票证”权利应该是隐含的,并且要么不显示,要么显示为禁用,因此无法更改。而不同的参与类型可以选择分配或不分配此权利。
我基本上有一个电子表格,其中参与者类型 / 正确 = 不能应用、可以应用(选择与否)和始终应用。例如:
| RIGHT | INV | SUP | ADM |
| ------------------ | --- | --- | --- |
| G_PROJECTS_READ | I | I | Y |
| G_PROJECTS_UPDATE | Y | N | Y |
| G_PROJECTS_CREATE | N | N | Y |
| G_PROJECTS_PUBLISH | N | N | Y |
Where Y = Type can toggle right on/off, N = Type doesn't have right
& I = Implied i.e. Type has right and it can't be deselected
关于如何建模的任何想法/指针?
非常感谢,
啊
【问题讨论】:
-
您是否考虑过通过在电子表格中创建所有可能的“参与角色”来消除模型的复杂性,从而消除对第三种“类型”权限建模的需要?负责将参与分配给用户的任何人都可以简单地选择适当的角色,而不是可能不得不即时设置(并且可能会犯错误)。因此,对于您的示例电子表格,最多有两个可能的选择(忽略管理员角色),您可以将其与参与类型联系起来:
PARTICIPATION_READ_ONLY和PARTICIPATION_READ_UPDATE
标签: java design-patterns permissions roles shiro