Bran's Blog not try just do best

善始者繁,克终者寡!

j2EE项目中角色,菜单,权限的设计和应用

引言

java ee在项目中一般需要进行权限管理,权限管理控制角色的相关权限,如菜单的显示,菜单二级菜单的权限,三级操作的权限等等。当项目越来越大,菜单越多,二级及三级菜单添加频繁,就需要良好的权限管理。这对前期数据库的设计非常重要,下面已某支付公司后台管理系统的权限管理为模板作初步的分析。

数据库基本设计

以下只列举了关联字段或者重要字段

1.菜单:逻辑数据,为主菜单和二级子菜单的固定数据

m_menu
+ id,
+ name,
+ parent_menu_id,
//主菜单id为1,5,10,15,20; parent_menu_id = null
//其他菜单设置parent_id, 如终端日志菜单(二级菜单)(id = 41), parent_menu_id = 15(终端监控 一级菜单)

2.视图:逻辑数据,为二级菜单的name, desc和其主菜单的对应关系逻辑,固定数据

m_view
+ id
+ name
+ desc
+ menu_id
//终端日志二级菜单数据: 31,TerminalLog, TerminalLog, 15

3.权限列表:逻辑数据,为功能操作与视图的对应逻辑关系,固定数据

m_permission
+ id
+ name
+ view_id(非FK)
//id(1,2,3,4)为增删改查,id其他为各个二级菜单(view_id对应于二级菜单视图)下的功能,如应用配置,默认参数,配置等等
//终端日志需要查询功能, (null, 0, query, 31) –> id:

4.视图权限: 固定数据,即当前权限能否显示这个视图

r_view_permission
+ id
+ permission_id
+ view_id
//终端日志功能的query查看功能需要权限,(null, 1, 31)

5.角色: 相对固定数据,为当前系统中的角色列表

m_role
+ id
+ name
+ desc
//如”admin”(1, admin, 管理员)

6.角色-菜单关系:动态数据,由客户自己设置,控制某角色菜单是否显示在index页面

r_menu_role
+ id
+ menu_id
+ role_id
//为admin添加终端日志菜单,显示在主页面 (null, 41, 1)
这里写图片描述

7.角色权限:动态数据,有客户自己设置,控制某角色是否有在菜单上操作三级菜单功能的权限

r_permission_role
+ id
+ permission_id
+ role_id
+ view_id
//这里我们给admin角色 添加 终端日志菜单 的 查询功能 (null, 1, 1, 31)
这里写图片描述


总结

总的来说控制菜单和功能权限就是两点:
1. 是否有显示菜单权限 r_menu_role,
2. 显示菜单后是否有操作菜单下三级功能的权限 r_persmission_role

阅读更多
文章标签: 数据库 j2ee 设计
个人分类: 项目
上一篇jqgrid 单元格数据格式化 formatter formatoptions
下一篇百度地图 baidu map api应用
想对作者说点什么? 我来说一句

php 角色权限菜单设置demo

2016年04月13日 34KB 下载

drools在j2ee目中应用

2018年06月08日 1.27MB 下载

没有更多推荐了,返回首页

关闭
关闭