2

我正在 ASP.NET Web-From 中设计一个需要Multilevel基于角色的授权和权限 (CRUD Operation) 的应用程序。

它需要在访问 Web-Forms 和对数据库的表单和表进行 CRUD 操作时对用户进行授权。

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

//More Info :

我正在使用 ASP.NET Web-Form 4.0 和 Entity Framework 4.1 Database First 方法。

我熟悉 ASP.NET 2.0 Membership, Roles, Forms Authentication 。

我将不胜感激设计 Database 的任何建议或帮助。

4

1 回答 1

2

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

还:

  1. 用户始终是至少一个组的一部分
  2. 一个组可能是另一个组的一部分
  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) 表格,每个人都可以阅读它(但不能修改它的结构)。SALES 组的用户也可以使用 Form 1 进行更新。管理员(一个组)可以修改、删除或使用表单 Form002(但不能创建它...) 管理员可以创建新表单。Tab-045A 是一个表,其记录可以由 Sales 组的用户创建/使用/修改/删除。

一些警告:

  • 请帮大家一个忙,不要让权限设置在单用​​户级别,但始终仅在组级别。新用户将自动成为 ALL_USERS 的一部分,并可能在以后添加到(或从)其他组中删除。
  • 最好不仅有表格和表格,还有“表格组”(假设最终用户可以创建表格)。如果不是这种情况,那么 CRUD 标志集中的“C”字段对于表单将变得无用。(表单是用户组可以设计的东西吗?或者它们是应用程序的一部分,就像我认为的表格一样?)。
  • 通常,您必须为 Create/Read/Update/Delete 定义适当的语义。对于表格,我想这意味着创建一个单一的记录(不是表格),但对于表格,它现在有点困惑。
  • 上表只是一个示例,并未正确规范化。根据具体情况,您可能必须将其拆分为至少两个表,可能更多。
  • 为了确定用户 X 是否可以对对象 Z 执行操作 Y,您基本上必须查找项目/组表上的权限集,并查看用户 X 属于哪些组。
  • 当用户属于两个不同的组时,您必须正确管理案例,并始终选择具有最多权限的组,或所有权限的联合。
  • 您必须管理用户属于某个组的情况,该组是另一个组的子组,并且权限已在更高级别的组中定义。

必须管理组和子组,您最好查看目标数据库中存在哪些类型的设施来管理树结构。你最好通过查看一些关于此的问题来复习这个主题。这是一个让你开始的例子,但它不是唯一的一个:

如何在 SQL 数据库中存储一棵树

于 2011-10-26T11:27:29.600 回答