1

我之前已经问过类似的问题

我有基本的用户角色:

-Admin
-Super User
-User

对于这个角色,我管理站点权限。比如添加新用户或更改他们的个人资料。

我的应用程序中还有很多页面,比如

-Evaluation.aspx 
-Action.aspx 
-Properties.aspx

等等。我希望能够为每个用户单独授予对每个页面的访问权限。

我考虑角色。我添加UserEvaluation角色,他可以浏览Evaluation.aspx

这种方法中的每个页面都有自己的基于角色的访问模型。所以我将在我的会员提供者中扮演更多角色。

-Evaluation
-Action
-Properties

然后我可以轻松地在web.config.

<location path="Users.aspx">
    <system.web>
      <authorization>
        <allow roles="Admin, Super User"/>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>

问题是aspnet_RolesinMembership provider变得杂乱无章。每当我处理角色时,我都必须过滤角色。

例如,我有List<string>用户类型角色:

private readonly List<string>  UserTypeRoles = new List<string> {"Users", "Super User", "Admin"};

当我想绑定CheckBoxList控件时,PagePermissionRoles我必须这样做:

private IEnumerable<string> UserSectionRolesGet(string userName)
{
    return Roles.GetRolesForUser(userName).Except(UserTypeRoles);
}

有没有办法创建两种类型的角色:UserTypeRolesPagePermissionRole提供单独的存储和处理。

我真的不想覆盖现有的内置 asp.net 会员提供程序。

4

0 回答 0