如何实现支持子角色的自定义角色提供程序?

问题描述:

关于如何实现支持父角色和子角色的自定义角色提供者,有没有很好的指导?如何实现支持子角色的自定义角色提供程序?

我有一个要求,按照通常的角色提供程序功能具有高级角色权限。但是,我还有要求将权限进一步分解为子角色。我玩弄了为子权限设置更多角色实例的想法,但我更愿意拥有允许子角色的本地解决方案。

例如:

[IT]

[IT]> [管理员]

[外联网]

[外联网]> [管理员]

在这种情况下,“管理员”角色实际上是两个不同的角色,一个是IT部门,另一个是Extranet方案。理想情况下,2个“管理员”角色之间没有关联,因为他们是独特的子角色。

[编辑]:关注伊戈尔的评论我觉得我应该澄清。 aspnetdb已经托管多个应用程序,因此使用应用程序名称不可能分离子角色,因为它已经被用来按应用程序分离角色。

+0

事后看来,我认为.Net角色提供者本质上建立在一维角色概念之上,其申请名称允许在某种程度上进行划分。我现在正在为角色提供程序类实现自定义Linq扩展库,该类将支持查找自定义的子角色表。 – 2010-07-28 13:08:12

1)使用权限聚合,为什么你必须使用继承?只需将用户分配给IT和管理员角色,他们的权限将被连接起来。

2)使用Application Name分开管理员(1)和管理员(2)。如果我了解你,它将是2个不同的应用程序(否则重命名一个管理员到其他名称)

运气。

+0

好点,我应该在我的问题上更清楚。我有多个应用程序已经共享相同的aspnetdb并使用不同的应用程序名称。在这种情况下,不能使用应用程序名来分隔“管理员”角色。 – 2010-07-28 10:24:38

(或许应该asp.net标签这个)

我不知道任何母语(MS),支持角色的解决方案中的作用的解决方案。如果您不需要在角色中提供角色,并且可以一直创建“IT”,“IT_Admin”,“Extranet”和“Extranet_Admin”等角色。

不知道您是否仍在寻找可行的解决方案,但最近我开发了一个具有类似要求的应用程序。我使用角色提供者来分配基本角色。就你而言,IT或Extranet。然后为每个用户分配一个状态(它是admin和extranet admin)。通过在登录时加入会话来存储他们的状态,并使用if语句来访问subrole页面和视图。

+0

谢谢你回到我身边。不久前我已经问过这个问题了。我们想出的解决方案是创建一个角色提供者,它继承了标准的SQL角色提供者。然后,我们添加了新的自定义表格来表示子角色并添加了包含此功能的方法。 – 2011-07-08 08:05:09