不会的千万别点进来!

一、简述:
对一套企业管理软件系统从软件人员调研、设计到交付用户使用一个主要环节是:管理软件所具有的针对用户处理业务操作模块划分;系统如何进行管理与维护。这就软件管理设计中的“用户”、“角色”、“权限”,即系统所具有的用户有哪些;每个用户所扮演什么角色;不同角色所具有的管理权限,这三个概念(“用户”、“角色”、“权限”)及相互关联关系在许多文档资料叙述甚多,软件研发人员在整个设计过程中无不关注,每个管理软件系统的使用者也在关注“我以什么角色身份”登录系统;我的角色身份登录后可以在管理软件中操作哪些具体业务。这是一个问题所对应来源于两个方面的关注。
如何把可以操作的各类业务(包含系统管理、维护)模块授权与可以登录的操作人员(角色划分及角色所获取的权限)软件开发人员一般是依据用户需求而确定,即:用户提出“根据业务性质划分确定角色”、“针对各类角色予以授权操作”。早期(上世纪70、80年代)的企业管理软件一般对可以使用“操作权限”设置方法,即一个单独的“人员操作权限”模块授权于登录系统人员可以使用的模块。
RBAC(Role-Based Access Control,基于角色的访问控制)是现在软件设计者普遍采用的角色划分及角色所具有权限分配方法。这种方法的基本思路是:一个可以登录系统的用户→确定该用户所扮演的角色→该角色对管理系统所具有的操作权限。

二、功能说明
1、登录用户
具体登录管理软件的操作人员。
2、用户角色
登录操作人员所扮演角色,诸如:“系统管理”、“账务管理”、“库房管理”等等。
3、角色具有权限
不同用户即便其角色一样,其操作权限也可能不尽相同。例如同样是“库房管理”角色,有的角色具有“材料采购订单管理”、“材料入库制单”权限,某些角色只具有“材料入库制单”权限。其实际基础业务环节有多少就应该有多少种权限可以对各类角色进行授权
以数据库管理系统为例,需要建立“登录用户(人员)”、“角色划分”、“登录用户角色分配、授权”三个数据表进行管理,形成一(个用户)对多(角色、权限)的数据关系。  

三、实现功能
后台管理系统中,每个登录的用户,有多个不同的角色,而每个角色都有不同的权限,针对每个用户所拥有的权限列表,根据其中菜单权限的等级进行划分归类,显示在操作菜单栏中。
菜单结构如下:

img

权限表设计如下:

img

     涉及的实体有部门、用户、角色及权限 ,部门-用户 是一对多关系,用户-角色是多对多关系,角色-权限也是多对多关系。在权限表中,权限等级取值可以是 1 、2、3,分别代表一级菜单、二级菜单、三级菜单,父级权限编号可以找到父级权限 ,一级菜单的父级权限默认是0,通过查询这个字段也可以找出某个菜单的子一级菜单列表。

四、效果说明
在用户登录后,获取用户拥有的所有角色,再根据每个角色拥有的权限进行汇总筛选,去除掉角色之间可能重复的权限,组合成分层次的权限结构,最后返回到页面中,根据权限等级划分层次显示即可。

需求这么明确,er图也有了,你这问题在哪?全都不会?