背景
只要有用户,组织机构、有角色的系统都会存在权限的配置,它使系统中的各个角色职责分明,权限管理系统能够体现出系统框架的合理性,也是对业务理解的结果,当然也是保证了系统的安全,一般权限包括菜单权限、功能权限、数据权限。下面我们主要讲一下最简单但是最实用的菜单权限的思路。
设计思路
一、创建角色数据
菜单绑定的是角色,例如:数据管理员一般拥有的是基础数据管理相关的菜单,用户、部门等管理。设置角色字段主要包括角色编号、角色名称,备注。准备好角色数据以后通过接口以列表或者下拉等形式返回到前端界面即可。
二、创建菜单数据
根据系统的需要设计菜单表相关的字段,一般包括菜单编号、名称、所属模块、菜单路径、是否打开新页、图标、排序,其他的根据业务扩展即可。将所有菜单属性通过接口返回到前端,用户通过事件获取菜单信息。
三、权限管理
创建角色权限表,主要字段是编号、菜单编号、角色编号、排序。前端通过获取的角色列表,选择单个角色进行授权,授权的过程是进行菜单的选择,一般设计的就是级联关系的菜单,例如树,父级是模块菜单、子级是子菜单项。
每次选择权限对应的菜单以后将权限和菜单数据一并写入到数据库,权限和菜单是一对多的关系。
配置权限的后台逻辑是先通过权限去判断该角色下是否已经存在菜单项,有的话先清除这些记录,然后再写入,总之每次的过程都是先判断清除,再更新。
四、角色菜单返回
通过接口返回包括角色权限表的属性,即将角色权限表和菜单表进行关联生成关联表或者视图进行返回,返回的属性包括菜单的属性和角色的属性。
前端编码逻辑是通过角色和系统模块的层级获取每个级别的菜单项进行js动态赋值html即可。
流程图