ASP.NET Membership:扩展角色成员资格?

3
我一直在研究asp.net成员资格,它似乎提供了我所需要的一切,但我需要某种自定义角色功能。
目前,我可以将用户添加到角色中,很好。
但我也需要能够向角色添加权限。
例如:
角色:编辑器 权限:可以查看编辑器菜单,可以写入编辑器表,可以删除编辑器表中的条目。
目前它不支持这样做,我的想法是在我的程序中创建一个管理员选项来创建角色,然后为角色分配权限,以表示“允许用户查看应用程序的某个特定部分”,“允许用户打开菜单项”。
有什么想法如何实现这样的东西吗?
我推测需要一个自定义角色提供程序,但我想知道是否已经存在某种框架扩展,而无需自己编写?
或者,有人知道如何解决这个问题的好教程吗?
我对asp.net SQL提供程序所创建的表等非常满意...但我认为我需要通过添加另一个名为RolesPermissions的表来扩展它。
然后,我推测 :-) 为每个有效的权限在表中添加某种枚举?
2个回答

1
您可以通过编程方式允许或不允许用户查看某些页面或执行某些操作,例如使用函数IsInRole,并检查是否允许用户执行某些操作。
HttpContext.Current.User.IsInRole("rolename")

你可以创建一个包含权限的类或表格,根据用户所属的角色来打开、关闭、允许等同一页面上的许多操作。我在我的程序中实现了这样的想法,非常简单。
以下是一个想法...
public enum csPermissions
{
    pActionDelete = 1,   
    pActionEdit = 2 , 
    ...more actions...
}

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    ....
};

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    ....
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
{
    ... questions here for all users roles...
    ... here is only an example .....
    if (HttpContext.Current.User.IsInRole("Administator")))
    {
        for (int i = 0; i < AdminPermission.Length; i++)
            if (AdminPermission[i] == (int)AskPermitForThisAction)
                return true;
    } 

    ...  
    return false;
 }

希望这可以帮到你。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接