T_Menu_Privilege表 这张表就是我们的最终终结大BOSS表,它里面是一个完整的系统权限与角色关系间的对应。 比如说: 我们想要知道“user”这个角色,可以操作哪些菜单,哪些权限,那么我们的SQL语句如下: selectdistinct m.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_type from t_menu_privilege mp, t_sys_menu m, t_privilege p, t_user_role r where mp.privilege_id=p.privilege_id and mp.role_id=r.role_id and mp.menu_id=m.menu_id and r.role_id='user' orderby m.menu_id
通过这个结果我们就知道了 1. 角色“user”能操作哪些菜单 2. 角色“user”对某个菜单具有什么样的权限 进而,我们可以推出: 我们想要知道Danzel这个人,可以操作哪些菜单,以及在哪些菜单上有哪些可供操作的权限,我们使用如下的SQL语句: selectdistinct m.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_type from t_menu_privilege mp, t_sys_menu m, t_privilege p, t_user_role r where mp.privilege_id=p.privilege_id and mp.role_id=r.role_id and mp.menu_id=m.menu_id and r.user_id='Danzel' orderby m.menu_id;
通过这个结果我们就知道了 1. Danzel这个人能操作哪些菜单 2. Danzel对某个菜单具有什么样的权限 3.3 界面制作 关于jsp,什么dao层,service层的具体代码这个就不讲了,这个没有意义的哦,我们来讲设计。 登录后如何显示左边的树型菜单: ü 取得用户名 ü 将该用户名作为参数input进如下的SQL语句得到该用户在登录后可以看到的系统菜单: selectdistinct m.menu_id, m.menu_descr, m.menu_url, m.menu_pidfrom t_menu_privilege mp, t_sys_menu m, t_privilege p, t_user_role r where mp.privilege_id=p.privilege_id and mp.role_id=r.role_id and mp.menu_id=m.menu_id and r.user_id='Danzel' STARTWITH MENU_PID='0' CONNECTBYPRIOR M.MENU_ID=M.MENU_PID orderby M.MENU_ID 将该结果直接给于index.jsp页面上的dtree.js组件,一个循环,所有菜单曾树形显示。 知道用户登录后能够对哪些菜单,并且在相关界面操作时有哪些子权限如:增、删、改、查、打印、报表的设计: ü 在登录时得到用户名等信息,然后将该用户名作为参数input进入如下的sql语句: selectdistinct m.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_type from t_menu_privilege mp, t_sys_menu m, t_privilege p, t_user_role r where mp.privilege_id=p.privilege_id and mp.role_id=r.role_id and mp.menu_id=m.menu_id and r.user_id='Danzel' orderby m.menu_id; ü 得到上述结果后,使用:Haspmap
知道该登录用户在登录后可以对哪些菜单进行操作,并且拥有什么操作权限啦?
相应的我们还需要制作如下的界面: ü 用户的管理界面 ü 角色的管理界面 ü 用户与角色的分配界面 ü 系统菜单的管理界面 ü 具体权限项的管理界面
ü 系统菜单与角色间具体的权限分配界面
好了,有了这些界面,一个完整的基于数据库引擎的权限系统算是完成了。 严重注意:
在制作“系统菜单与角色间具体的权限分配界面”时,如果在界面上把某个角色对该条菜单的“查看”这个选项disable后,那么该角色将不拥有任何该菜单的所有权限,举例: 某角色对菜单A拥有如下权限: 增、删、改、打印
但是这个“查看”权限没有,也有可能是管理员误操作,但是从真实情况我们来说,这个角色连“查看”的权限都没有,连菜单都进不了,他能做什么“增、删、改。。。”等其它的操作啊?操作个头啊!是吧?
所以一旦界面上该角色对某个系统菜单没有了查看权限后,它对这个菜单的其它权限也必须从T_MENU_PRIVILEGE这个表中删除。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库通向架构师的道路06(第六天)之漫谈基于数据库的权限系统的设计(2)在线全文阅读。
相关推荐: