2

我想使用内置的 ASP.NET 成员资格和角色提供程序来创建一个系统,该系统限制每个经过身份验证的用户可以查看和编辑的内容。

该软件已经具有“项目”和“组”的概念。每个项目都属于一个组。

系统的用户实际上属于同一个组。这目前没有在我的域模型中表达。

我想将两个级别的权限扩展到这些用户,查看和编辑。如果他们在一个组中,我希望他们能够查看该组中的项目。如果他们对该组具有编辑权限,我希望他们能够编辑该组的项目。

用户通常属于 1 个组,但有时可能属于多个。用户可能对多个组具有查看权限,但仅对他们可以查看的 1 个(或部分)组具有编辑权限。

我不知道如何解决这个问题。我是否应该为每个组(即 Group1View、Group1Edit 等)简单地创建 2 个角色(使用 asp.net 角色提供程序)?或者我应该创建另一个表来创建 aspnet_Users 表和 Groups 表之间的关系,第三列标识它们的权限级别?

最终,我想实现类似于史蒂夫史密斯在这里博客的内容的特权检查:http: //stevesmithblog.com/blog/favor-privileges-over-role-checks/

感谢您提供的任何意见!

4

1 回答 1

2

我将创建一个自定义成员资格和角色提供程序来实现这一点,并包装您所指的这个安全组件。我只会使用 Membership 和 Role 提供的服务来满足您需要的最小请求,而不是依赖它来确保您的整个应用程序安全。

对于具有层次复杂性的自定义安全性,角色提供程序不能很好地满足您的需求。您提到的内容会起作用(使用名称),并且自定义角色提供程序可以从您提到的组件中派生出用户也可以访问的角色的名称。但是,我只会使用它来处理内置的框架功能(登录控件、站点地图控件或您使用的任何东西),而其他一切都使用您自己的安全设置。

从长远来看,角色提供者最终会限制您的需求。

HTH。

于 2011-07-28T20:00:27.483 回答