Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET中角色的权限_C#_.net_Asp.net - Fatal编程技术网

C# .NET中角色的权限

C# .NET中角色的权限,c#,.net,asp.net,C#,.net,Asp.net,我正在使用标准的.NET身份验证数据库表和代码,以及.NET 4.0、C#和MVC 3 基本上,我希望拥有角色(包括在框架中),然后能够为这些角色分配权限(据我所知,这些角色没有包括在内) 所以我想给角色分配权限。会计角色的用户无法编辑和删除员工,但管理员角色的用户可以。由于这些权限可以随时更改,因此我不想检查User.IsInRole(“管理员”),而是想做一些类似于User.HasPermission(“EditEmployee”)的事情 我可能可以自己设计一些自定义表和代码,但如果.NET

我正在使用标准的.NET身份验证数据库表和代码,以及.NET 4.0、C#和MVC 3

基本上,我希望拥有角色(包括在框架中),然后能够为这些角色分配权限(据我所知,这些角色没有包括在内)

所以我想给角色分配权限。会计角色的用户无法编辑和删除员工,但管理员角色的用户可以。由于这些权限可以随时更改,因此我不想检查
User.IsInRole(“管理员”)
,而是想做一些类似于
User.HasPermission(“EditEmployee”)
的事情


我可能可以自己设计一些自定义表和代码,但如果.NET框架已经内置,我宁愿使用它。有这样的吗?如果没有,是否有一个库可以做到这一点?

也许您可以简单地为可以编辑员工的用户添加另一个角色。比如“CanedEmployee”,然后验证用户是否处于角色“CanedEmployee”?当我必须做类似的事情时,我会这样做。

通常,当我想做类似的事情时,我会使用下划线符号“\u1”创建子角色,并将子角色提供的附加权限/功能分段

例如:

管理员 管理员/雇员 管理员启用任务 等等


然后,我解析管理页面中的名称,以便获得一个格式良好的嵌套树视图/下拉列表,然后将其分配给各个用户。通过这种方式,您可以继续使用内置的安全系统,而不必在管理页面中添加任何特殊的解析逻辑。

内置的RoleProvider实际上并没有提供一种干净的方法。实际上,使用RoleProvider的唯一方法是创建“Employees\u CanEdit”和“Employees\u CanAdd”等角色,但最终会出现大量角色的混乱

不过,还有其他方法可以对您的角色拥有权限。您可以创建一个链接用户、角色(“员工”)和权限(“添加”或“编辑”)的表。然后您可以实现如下内容:

public bool HasPermission(string role, string permission) {
    // Some sql for accessing the table
    // return true if a row exists that matches the user, the role, and the permission
}

可能是@djacobson的复制品-是的,我看到了那篇帖子。但是,它是在两年前发布的,所以我不知道从那时起.NET 4.0是否包含此功能,或者是否有第三方将此功能开发为库。我创建了自己的框架来实现此功能,类似于角色api,但使用了权限。大多数应用程序似乎都实现了自己的类来实现这一点,因为与简单的角色检查相比,它增加了更多的灵活性。也许这应该是采取的方法。我试图模仿我见过的现有角色/权限提供程序,但它可能太复杂了。最后,角色只是权限的聚合。我想我将使用.NET角色表来表示“权限”,然后出于显示目的,我将为“角色”创建一个自定义表,该表将与多个权限相关。是的!就像扎卡里解释得比我好一样,根据我的说法,他所做的是更好的方式。至少是最简单的。