我应该如何将用户与域对象相关联?

时间:2011-07-28 18:20:00

标签: c# asp.net asp.net-membership asp.net-roles

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

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

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

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

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

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

最终我想实施一些特权检查,这与史蒂夫史密斯在这里发表的博客有点类似:http://stevesmithblog.com/blog/favor-privileges-over-role-checks/

感谢您提供的任何意见!

1 个答案:

答案 0 :(得分:2)

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

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

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

HTH。