【问题标题】:How do I implement a custom role provider which supports sub roles?如何实现支持子角色的自定义角色提供程序?
【发布时间】:2011-03-22 01:37:49
【问题描述】:

关于如何实现支持父子角色的自定义角色提供程序,是否有任何好的指南?

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

例如:

[IT]

[IT] > [管理员]

[外联网]

[外联网] > [管理员]

在此场景中,“管理员”角色实际上是 2 个不同的角色,一个用于 IT,一个用于 Extranet 场景。理想情况下,两个“管理员”角色之间没有关联,因为它们是唯一的子角色。

[编辑]:在伊戈尔的评论之后,我觉得我应该澄清一下。 aspnetdb 已经托管了多个应用程序,因此无法使用应用程序名称来分隔子角色,因为它已被用于按应用程序分隔角色。

【问题讨论】:

  • 事后看来,我认为 .Net 角色提供程序本质上是建立在一个一维角色概念之上的,应用程序名称允许在某种程度上进行划分。我现在正在为角色提供程序类实现一个自定义 Linq 扩展库,它将支持对自定义子角色表的查找。

标签: .net asp.net roles provider


【解决方案1】:

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

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

运气。

【讨论】:

  • 好点,我的问题应该更清楚。我有多个应用程序已经共享相同的 aspnetdb 并使用不同的应用程序名称。在这种情况下,无法使用应用程序名称来分隔“管理员”角色。
【解决方案2】:

不确定您是否仍在寻找可行的解决方案,但我最近开发了一个具有类似要求的应用程序。我使用角色提供者来分配基本角色。在您的情况下,是 IT 或外联网。然后为每个用户分配一个状态(它是管理员和外联网管理员)。在登录时创建会话以存储其状态并使用 if 语句来访问子角色页面和视图。

【讨论】:

  • 感谢您回到我身边。我很久以前就问过这个问题了。我们提出的解决方案是创建一个继承标准 sql 角色提供程序的角色提供程序。然后,我们添加了新的自定义表来表示子角色,并添加了包含此功能的方法。
【解决方案3】:

(应该用 asp.net 标记这个)

我不知道有任何本地 (MS) 解决方案支持角色解决方案中的角色。如果您不需要在角色中提供角色,则始终可以创建“IT”、“IT_Admin”、“Extranet”和“Extranet_Admin”等角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多