gpt4 book ai didi

c# - 基于多级角色授权的数据库设计

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:39 25 4
gpt4 key购买 nike

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

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

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

//More Info :

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

我熟悉 ASP.NET 2.0 成员资格、角色、表单例份验证。

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

最佳答案

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

还有:

  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)orm,每个人都可以阅读它(但不能修改它的结构)。SALES 组的用户也可以使用 Form 1 进行更新。管理员(一个组)可以修改,删除或使用Form Form002(但不能创建它......)管理员可以创建新表单。Tab-045A是一张表,销售组的用户可以创建/使用/修改/删除其记录。

一些注意事项:

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

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

How to store a tree in SQL database

关于c# - 基于多级角色授权的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com