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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值