2015.12.9 权限管理
先来回顾一下,这段时间老师都讲了什么,
周一,讲了异步传输,二级联动,以省市为例。
周二,讲了异步传输以json作为数据载体。然后是powerdesign的使用,dwr异步传输工具类化。
周三,讲了 权限管理。
作业还有1、购物车例子没有做,2、json传输没有练习。3、Powerdesign现在准备用起来,4、dwr没有练习。5、异步登录没有练习。
那今天知道有哪些没有做,先做个标记,主要是周一晚上那个 事儿做得不对,整个节奏,都没有把握好。
明天又会讲解 上传和下载。东西很多很庞杂。
今天先处理权限,其他的东西都先别做!要不然会越落越多。
先创建 表,利用powerdesign
用户表:
User
user_id user_name user_password user_type[先设置3个]
角色表:
Role
role_id role_name menu_id
菜单表:
Menu
mune_id menu_name menu_url menu_note
系统管理员给用户赋角色,给角色赋菜单。
在多对多的对应上,有两种处理方式,如果存在一个用户对应多个角色,一个角色对应多个用户。即:用户角色是多对多的关系。就会导致查询出来的菜单存在重复。此时有两种解决方式。
public List getMenuByRoleId(String roleId) { List<Menu> list = rd.getMenuByRoleId(roleId); List<Menu> list2 = md.getMenuInfo(); for (int i = 0; i < list.size(); i++) { Menu r1 = list.get(i); for (int j = 0; j < list2.size(); j++) { Menu r2 = list2.get(j); if(r1.getId() == r2.getId()){ r2.setIsok(true); break; } } } return list2; }
老师给出的实现方式,这里面不能用list.contains();因为这里面调用的还是父类的equals()方法。里面的比较利用的是地址进行的比较。所以每次拿出来进行比较的时候,都是新的,就实现不了去重的意义。所以可以通过遍历比较id这是一种方式。再者就是通过在重现compare方法,实现contains的比较意义。
这里想要重新设计一下这里的模式,就是用户 角色 菜单。
Role table
1---人事专员
2---人事经理
3---薪酬专员
4---薪酬经理
5---人力资源部负责人
6---公司领导
7---系统管理员
Menu_id menu_name menu_url note
menu 1--- 个人信息 --- userinfo,jsp
menu 2--- 薪酬管理 --- salary,jsp
menu 3--- 人事管理 --- humanresourse,jsp
menu 4--- 招聘管理 --- employment,jsp
menu 5--- 培训管理 --- training,jsp
menu 6--- 数据分析 --- dataanalyses,jsp
menu 7--- 系统管理 --- system,jsp
对于 角色1 人事专员 来讲:它能够查看的有1个人信息,3人事管理,7系统管理
对于 角色2 人事经理 来讲:她能够查看的有 1个人信息,3人事管理,6数据分析,7系统
【人事专员能够看菜单、对于我的项目来说】
对于角色3 薪酬专员来讲:查看:1 个人信息 2 薪酬管理
对于角色4 薪酬经理来讲:查看:1个人信息 2薪酬管理 6 数据分析
对于角色5人力负责人来讲:查看 :134567
对于角色6公司领导 来讲:查看:1234567
对于角色 7系统管理员 来讲:查看 1234567