动态菜单/权限管理的实现

权限管理

现在基本上大大小小的系统都由权限分配这一基础功能,不同的用户看到的界面不一样,能够使用的功能也不会尽然相同

所以我要让我的系统做到超级管理员可以看到/操作所有界面,而新闻管理员只能看到新闻管理模块,仓库管理员只能看到仓库管理模块等等。。。

思想

动态菜单:系统里面有很多菜单可以进行点击操作,但是不同的角色用户能够操做的菜单肯定是不会相同的,那么,我就需要用角色来区分用户,进而区分用户所能看到/操作的菜单

每个菜单我给其定义一个url,通过该url访问对应的菜单,将这个url和角色进行绑定,然后角色和用户进行绑定,属于同一角色下的用户也就拥有该角色下绑定的url

数据表

这里有五张表,也就是上面说的菜单表、角色表、用户表、角色菜单关联表和角色用户管理表

下面写的是关键字段,其它字段省略

菜单表-menu

字段 说明
menu_id 菜单记录id
menu_name 菜单名称,也就是我们在系统里看到的菜单选项的名称
menu_url 菜单的访问url,通过该url才能访问菜单的内容
parent_id 父菜单id,如果是子菜单,则记录其父菜单id,否则,-1记录呗
order 菜单级别,对菜单分级进行记录,1级菜单,2级菜单。。。

角色表-role

字段 说明
role_id 角色id
role_name 角色名称

用户表-user

字段 说明
user_id 用户id
user_name 用户名

角色菜单表 role_menu

字段 说明
role_menu_id 角色菜单关联记录id
role_id 角色id
menu_id 菜单id

角色用户表 role_user

字段 说明
role_user_id 角色用户id
role_id 角色id
user_id 用户id

通过上面五张表的设计及其关联,可以在用户登录的时候,根据该用户所属的角色,在role_menu表里找出所有的菜单的实体集合,然后放在session里面,登录跳转后从Session里读出菜单集合,这样就可以实现动态菜单,每个角色下的菜单操作权限也就实现了。

具体的每个菜单下的小权限,比如按钮、下拉框、搜索框之类的权限操作,可以读取菜单的url的session后通过Js进行这些操作表单的隐藏或者显示,综上,动态菜单和菜单下内容的具体小权限操作都能实现


有疑问还请指出,有其它更好的方法可以评论区交流

你可能感兴趣的:(设计)