我一直在看asp.net会员资格,它似乎提供了我需要的一切,但我需要某种自定义角色功能。
目前我可以将用户添加到角色中,很棒。
但我还需要能够为角色添加权限..
即。
角色:编辑 权限:可以查看编辑器菜单,可以写入编辑器表,可以删除编辑器表中的条目。
目前它不支持这一点,这背后的想法是在我的程序中创建一个管理选项来创建一个角色,然后为一个角色分配权限,说“允许用户查看应用程序的某个部分” ,“允许用户打开菜单项”
我是如何实现这样的事情的?
我假设一个自定义的ROLE提供程序,但我想知道是否存在某种框架扩展而没有自己编译?
或者有人知道如何解决这个问题的好教程吗?
我很满意asp.net SQL提供程序在表等方面创建的内容......但我想我需要通过添加另一个名为RolesPermissions的表来扩展它
然后我推测:-)在表中为每个有效权限添加某种枚举?
提前谢谢
答案 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