如何允许用户将不同的站点功能分配给asp.net角色提供程序中的不同角色?

时间:2009-02-15 01:51:02

标签: asp.net roleprovider

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

2 个答案:

答案 0 :(得分:2)

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

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

你真的想要这样的东西:

  • 用户角色 - 可以发布到论坛,可以编辑自己的帖子。
  • 编辑角色 - 可以执行用户可以执行的任何操作,也可以编辑其他帖子。
  • 管理员角色 - 可以执行编辑器和其他管理工作。

因此,如果用户处于编辑角色,则会自动为用户提供权限等。

然后你的选择是:

  1. 为每个论坛复制这些角色,为其分配用户等。
  2. 为您的用户个人资料添加几个属性,例如“ForumEdit”和“ForumAdmin”,并存储他们能够在其中编辑/管理的论坛列表。
  3. (1)的优点是您只需要检查一下用户是否可以执行管理/编辑任务,但是管理所有这些角色的开销更高。

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

    this one here really的类似答案。

答案 1 :(得分:0)

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

例如,有时我想要编辑器的角色能够修改其他人的帖子,但有时我不这样做。

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

编辑器 主席 管理员 等

用户可以属于这三个人。