.NET中角色的权限
我使用标准的.NET身份验证数据库表和代码,.NET 4.0,C#和MVC 3。
基本上,我想要角色(包含在框架中),然后能够为这些角色分配权限(据我所知,这些角色不包括在内)。
所以我想给角色分配权限。 会计角色中的用户无法编辑和删除员工,但具有管理员角色的用户可以。 由于这些权限可能会随时更改,而不是检查User.IsInRole("Administrator")
,所以我想要执行类似User.HasPermission("EditEmployee")
。
我大概可以设计一些自定义表格并编写自己的代码,但是如果它已经内置了,我宁愿使用.NET Framework。 有没有这样的事情? 如果没有,是否有一个图书馆可以做到这一点?
也许你可以简单地将其他角色添加到可以编辑员工的用户。 像“CanEditEmployee”,然后验证用户是否在角色“CanEditEmployee”? 当我必须做类似的事情时,这就是我所做的。
内置的RoleProvider实际上并没有提供一个干净的方式来做到这一点。 真正实现RoleProvider的唯一方法是创建像“Employees_CanEdit”和“Employees_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
}
通常,当我想要做这样的事情时,我使用下划线符号“_”创建子角色,分割了子角色提供的附加权限/功能。
例:
管理员Administrator_EditEmployee Administrator_EnableTasks等...
然后我在我的管理页面中解析这些名称,以便我得到一个格式良好的嵌套树视图/下拉列表,然后我将其分配给不同的用户。 这样,您可以继续使用内置的安全系统,而无需在管理页面中添加任何特殊的分析逻辑。
链接地址: http://www.djcxy.com/p/54127.html