权限管理
序
现在基本上大大小小的系统都由权限分配这一基础功能,不同的用户看到的界面不一样,能够使用的功能也不会尽然相同
所以我要让我的系统做到超级管理员可以看到/操作所有界面,而新闻管理员只能看到新闻管理模块,仓库管理员只能看到仓库管理模块等等。。。
思想
动态菜单:系统里面有很多菜单可以进行点击操作,但是不同的角色用户能够操做的菜单肯定是不会相同的,那么,我就需要用角色来区分用户,进而区分用户所能看到/操作的菜单
每个菜单我给其定义一个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进行这些操作表单的隐藏或者显示,综上,动态菜单和菜单下内容的具体小权限操作都能实现
有疑问还请指出,有其它更好的方法可以评论区交流