asp.net会员:扩展角色成员资格?

时间:2010-04-01 22:07:11

标签: asp.net asp.net-membership roles

我一直在看asp.net会员资格,它似乎提供了我需要的一切,但我需要某种自定义角色功能。

目前我可以将用户添加到角色中,很棒。

但我还需要能够为角色添加权限..

即。

角色:编辑 权限:可以查看编辑器菜单,可以写入编辑器表,可以删除编辑器表中的条目。

目前它不支持这一点,这背后的想法是在我的程序中创建一个管理选项来创建一个角色,然后为一个角色分配权限,说“允许用户查看应用程序的某个部分” ,“允许用户打开菜单项”

我是如何实现这样的事情的?

我假设一个自定义的ROLE提供程序,但我想知道是否存在某种框架扩展而没有自己编译?

或者有人知道如何解决这个问题的好教程吗?

我很满意asp.net SQL提供程序在表等方面创建的内容......但我想我需要通过添加另一个名为RolesPermissions的表来扩展它

然后我推测:-)在表中为每个有效权限添加某种枚举?

提前谢谢

2 个答案:

答案 0 :(得分: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;
 }

希望得到这个帮助。

答案 1 :(得分:0)

您可以使用框架根据角色限制对整个页面或目录的访问。这可以在web.config的授权元素中配置。 http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx

此外,如果您使用SiteMap作为菜单,并且已配置授权,则可以使用安全修整来限制菜单。 http://www.google.com/search?q=asp.net+security+trimming