【问题标题】:ASP.NET, how to manage users with different types of rolesASP.NET,如何管理具有不同类型角色的用户
【发布时间】:2009-09-02 12:43:38
【问题描述】:

我想创建一个拥有不同用户的网站。用户可以有不同的角色,管理员和用户,这是一个非常有据可查的情况。但我还想根据他们的位置对用户进行分组,所以在每个位置我都可以同时拥有管理员和用户。 - 多维角色系统?

原因是,德国用户应该可以访问特定的文档集,而意大利用户不应该。

我应该在哪里查找有关此特定主题的文档?我需要一些方法来限制我的搜索,也许是一些关键字。

【问题讨论】:

    标签: asp.net roles


    【解决方案1】:

    另一种方法是添加另一组角色,对应于可用的不同位置,例如GermanyItaly。然后,您将 所有 德国用户设为 Germany 角色的成员,并将德国管理员设为 GermanyAdmin 的成员。检查权限时,您会同时检查 Admin 和当前语言环境。

    请记住,一个用户可以有多个角色。

    【讨论】:

    • 我已经想到了,但是如何区分位置和用户类型的角色呢?我在 90 年代后期使用的方法是拥有一个包含用户表、角色表、位置表和 ID 的数据库,以将它们链接在一起。然后我可以区分不同的类型,根据不同的类型进行查找等等。但我认为 asp.net 可能更容易做到这一点,而这正是我正在寻找的。这有意义吗?
    • 我明白你的意思,但不——这个解决方案没有为这个问题提供简单的答案。如果能够专门列出位置对您很重要,您可能希望实现自己的“MembershipProvider”,它继承自标准的。另一方面,如果您只拥有管理员和用户(或者可能还有一两个角色)而其余的将是位置,则您可以列出除少数角色之外的所有角色。丑陋,但工作......
    • 一个非常相似的替代方法是创建两个角色“Germany”和“Germany.Admin”。然后你可以做User.IsInRole("Germany") && User.IsInRole("Germany.Admin")。您必须为每个国家/地区创建角色,但如果您遵循特定格式,您始终可以知道用户在哪里以及他们拥有什么权限。
    • 这是我目前的方法,但我可以想象代表 100 个国家所需的大量角色乘以用户类型(管理员、用户...)的数量乘以不同的数量每个用户需要具备的能力(添加、编辑、打印、删除……)。这是正常的方法还是有更好的“最佳实践”?
    • 嗯,老实说,这听起来有点难以管理。我不知道该告诉你什么。
    【解决方案2】:

    首先请看4GuysFromRolla上非常优秀的系列教程:http://aspnet.4guysfromrolla.com/articles/120705-1.aspx

    其次,内置的 Role Provider 非常简陋。您将用户与字符串(角色)相关联,仅此而已。没有与角色关联的层次结构或其他属性,除非您将其打包到字符串(角色名称)中。

    【讨论】:

    • #1:是的,我已经看过了,但它仍然让我感到困惑 :) #2:正是我所害怕的。你说它缺少的东西,可能就是我要找的东西:S
    【解决方案3】:

    您可能想查看自定义配置文件属性。 MSDN

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2012-09-23
      • 2014-09-16
      • 2010-12-19
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 2017-07-16
      • 2013-08-06
      相关资源
      最近更新 更多