【问题标题】:How can I allow a user to assign different site functions to different roles in an asp.net role provider?如何允许用户将不同的站点功能分配给 asp.net 角色提供程序中的不同角色?
【发布时间】:2009-08-27 20:50:35
【问题描述】:

我正在争论是否要编写自己的身份验证类。几乎完成了,但我认为使用角色提供程序(自定义或默认)可能会更好。我知道您可以将用户分配给角色,然后根据当前角色向用户显示信息。但是,如果您想根据任务分配权限怎么办?例如,有时我希望编辑角色能够修改其他人的帖子,但有时我不这样做。这是一个简单的情况,但我希望获得更细粒度的授权,而不是拥有大量角色(编辑、编辑所有帖子等)。这是否可以使用自定义 asp.net 角色提供程序,或者我应该继续完成我自己的系统吗?

【问题讨论】:

    标签: asp.net roleprovider


    【解决方案1】:

    基本的 ASP.NET 角色提供程序是平面结构的 - 因此用户需要属于他们所属的所有角色。

    您需要找到支持层次结构的/write a role provider - 我建议您使用完全不同的路径,因为您将从中获得一些好处,例如与这些提供程序一起使用的框架的其他方面(登录控制,配置授权/访问等设置)。

    你真的想要这样的东西:

    • 用户角色 - 可以在论坛发帖,可以编辑自己的帖子。
    • 编辑角色 - 可以做任何用户可以做的事情,并且可以编辑其他帖子。
    • 管理员角色 - 可以做任何编辑可以做的事情,以及其他管理事务。

    因此,如果用户处于 Editor 角色,他们将自动获得用户权限等。

    那么你的选择是:

    1. 为每个论坛复制这些角色,为他们分配用户等。
    2. 在您的用户个人资料中添加几个属性,例如“ForumEdit”和“ForumAdmin”,并在其中存储他们可以编辑/管理的论坛列表。

    (1) 的优点是您只需要进行一次检查即可查看用户是否可以执行管理/编辑任务,但管理所有这些角色的开销更高。

    (2)的优点是易于管理角色,您可以将用户从 editors 组中删除,例如,他们会失去所有编辑权限,但您需要更高的成本来确定他们是否真的是该论坛的编辑,因为您需要查询他们的个人资料。

    this one here really 的类似回答。

    【讨论】:

      【解决方案2】:

      我不完全确定你的意思,如果你能澄清一下:

      例如,假设有时我希望编辑角色能够修改其他人的帖子,但有时我不这样做。

      您可以为用户分配多个角色。所以我会有一个基础角色,然后逐步添加功能

      编辑器 版主 行政 等等。

      一个用户可以同时属于这三个。

      【讨论】:

      • 说我有 2 个论坛,在一个论坛中用户可以编辑其他人的帖子,但在另一个论坛中,他们只能编辑自己的帖子。现在我需要 2 个角色。当我添加一个新用户时,我需要添加每个角色。我可能会添加 20 个角色...是否可以将用户角色分配给用户组?
      猜你喜欢
      • 2014-05-05
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2010-10-30
      • 2019-12-19
      • 2023-02-14
      相关资源
      最近更新 更多