我们在开发很多项目的时候,都会用到用户权限管理,我也在很多项目里做过权限控制,所以,我也总结出一套条理清晰的角色权限控制体系。本文采用RBAC(Role Based Access Control)的基本思想,RBAC(角色访问控制)的基本思想可简单地用用户--角色--权限来表示,即把整个访问控制过程分成两步:访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离
由于RBAC实现了用户与访问权限的逻辑分离,因此它极大的方便了权限管理。例如,如果一个用户的职位发生变化,只要将用户当前的角色去掉,加入代表新职务或新任务的角色即可,角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,并且委派用户到角色不需要很多技术,可以由行政管理人员来执行,而配置权限到角色的工作比较复杂,需要一定的技术,可以由专门的技术人员来承担,但是不给他们委派用户的权限,这与现实中情况正好一致。利用.NET实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应不同模块的不同权限,同一个用户可属于不同的角色,对模块的操作权限取用户所属几个角色的最高权限
下面看下系统的效果图:
1、系统权限图:
其中角色维护对应的是角色的添加、删除、修改等功能,不需要多说;菜单维护对应的是为角色分配页面权限;系统授权为该角色在特定的页面上分配操作权限。
2、菜单授权页面:
为角色分配页面,选中角色再为角色分配相应的页面权限,就可以了。
3、系统菜单授权页面:
对上面已经分配了页面的角色再进行操作权限授权,选中角色,再选中相应的页面弹出对话框选择相应的页面操作权限,后面的权限包含了前面的权限,例如如果具有修改权限,就会自然的具有查看、查询、添加的权限。这样就完成了对角色的页面授权和页面操作权限。让相同的角色在不同的页面可以具有不同的操作;让不同的角色在相同的页面也可以具有不同的操作权限;这样就实现了权限细化管理的问题。接下来为用户分配角色权限;
4、为用户分配角色:
一个用户可以具有多个角色,不同的角色在相同的页面取页面操作权限的最大值,如测试人员一在人员维护这个页面具有修改的权限,而测试人员二在人员维护这个页面具有添加的权限,那么这个用户在人员维护这个页面就具有修改的权限。
这个整个系统的权限设计就完成了,这个系统采用多用户、多角色的管理方式,方便了用户以不同的角色和身份进入系统可以进行不同的操作。
关于角色权限这一部分代码如下:
权限设计部分代码
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)