2

我正在设计ASP.NET Web中的应用程序 - 其中需要Multilevel基于角色的授权和权限(CRUD操作)。针对多级Roledased授权的数据库设计

它需要授权用户访问Web Forms和CRUD Operations On Forms和Tables数据库。

应用程序的管理员将能够确定哪些角色有权访问特定页面以及授权执行哪项操作。

//More Info : 

我正在使用ASP.NET Web-Form 4.0和Entity Framework 4.1数据库优先方法。

我熟悉ASP.NET 2.0成员,角色,表单身份验证。

我将不胜感激任何建议或帮助设计数据库。

+0

你有什么这么远吗? – bryanmac

+1

角色列表是否为静态?还是动态? “角色”是赋予特定用户的标签,还是可以创建用户组(以及组)组并将角色关联到组(然后组中的所有用户都可以获得)? –

+0

@bryanmac:我什么也没做,我只是想用自定义角色提供者 – Mostafa

回答

2

如果我正确理解这一点,那么您将拥有一组用户(可能在SubSets中进行细分:每个子集都是一个组)。

另外:

  1. A用户总是至少一种第
  2. A组的一部分可以是另一组
  3. 实际的ACL在组级别被设置和用于 各自形成或限定的一部分表。

所以:

Item  Type GroupId  C R U D 
    Form001 F ALL_USERS N Y N N 
    Form001 F Sales  N R U N 
    Form002 F Admin  N Y Y Y 
    All_FORMS T:F Admin  Y Y Y Y 
    Tab-045A D Sales  Y Y Y Y 

它说: Form001是(F)ORM和每个人都可以读它(但不能修改它的结构)。 来自SALES组的用户也可以使用表单1进行更新。 管理员(组)可以修改,删除或使用表格Form002(但不创建它...) 管理员可以创建新的表单。 Tab-045A是一张表,其记录可以由Sales组中的用户创建/使用/修改/删除。

几个注意事项:

  • 请大家做一个忙,不允许特权,在单个用户级别,但始终只在集团层面进行设置。新用户将自动成为ALL_USERS的一部分,并可能稍后添加到其他群组(或从中删除)。
  • 最好不仅有表格和表格,而且还有“表格组”(假设表格可以由最终用户创建)。如果不是这种情况,那么在CRUD标志集中的“C”字段对于表单就没用了。 (用户组可以设计哪些形式?或者它们是否是应用程序的一部分,正如我认为的那样,对于Tables?)。
  • 一般来说,你必须为Create/Read/Update/Delete定义适当的语义。对于表,我想这意味着创建一个单一的记录(不是表格),但对于表单来说,目前有点困惑。
  • 上表只是一个例子,没有正确的标准化。根据具体情况,您可能必须将其分为至少两个表格,可能更多。
  • 为了确定用户X是否可以在对象Z上执行操作Y,您基本上必须查找项目/组表中的权限集,并查看用户X属于哪个组。
  • 您必须正确管理用户属于两个不同组的情况,并且始终选择拥有最多权限的用户或所有权限的联合。
  • 您必须管理用户属于另一个子组的组成部分的组,并且已在上一级组定义了权限。

要管理组和子组,最好查看目标数据库中存在哪些设施来管理树结构。通过查看关于此问题的几个问题,您最好仔细研究这个问题。这是一个给你一个开端,但它不是唯一的一个:

How to store a tree in SQL database

+0

谢谢,我明白你说的话,我没有接受你的帖子作为回答,因为我希望别人也有想法。 – Mostafa

+0

没关系,如果我在这里问了一个问题,我会等待一两天,然后再接受答案。 –