Easyui权限设计
权限树
所谓权限:指的是系统中的资源,资源包括菜单资源(学习情况报表,账号审核...)以及按钮资源
所谓角色:指的是系统中的权限集合(每一个角色对应着哪些权限集合)
按钮资源
现象:同一个菜单,不同的人能看到的按钮还不一样。
1、一星权限设计(用户权限多对一)
?执行数据库脚本sql
?建立实体类
?创建dao方法
?Webservlet层创建
?展示对应的树形菜单
实现思路:通过账号和密码查询 是为了获取菜单的id 获取到里面的menuid后 可加载对应的菜单或以及子菜单
2、二星权限设计(用户权限多对多)
?执行数据库脚本sql
?修改原有的实体类
?建立实体类
?创建dao方法
?再写一个权限集合表方法
?新增webservlet的方法
?新增登入界面,跳入前端树形菜单展示每个对应的权限集合菜单
实现思路:用户查询登陆表 有数据代表已注册 通过uid 查到中间表(一个uid查中间表的方法) 获取到一个权限集合 对应多个数据 再进行遍历uid查到的集合 然后拼接每一个map集合的menuid(这个menuid的集合就是那些数字 方法用in可得到多组父子关系)
部分获取集合代码:
public String login2(HttpServletRequest req,HttpServletResponse resp) {
try {
//调方法查询id跟密码的用户
List<Map<String, Object>> login1 = this.userdao.login2(req.getParameterMap(), null);
//拿到查询到的这个用户
Map<String, Object> user = login1.get(0);
System.out.println("++++"+user);
if(user!=null) {//这个用户不为空
Map<String, String[]> map=new HashMap<>();//写一个map拿值集合
map.put("uid",new String[] {(String) user.get("uid")});//拿到这个用户的uid
//获取中间表信息 通过uid给下面方法就得到这个uid查到的所有menuid
List<Map<String, Object>> userMenu = this.userdao.userMenu(map, null);
StringBuffer sb=new StringBuffer();
for (Map<String, Object> map2 : userMenu) {//再遍历uid查到的集合
sb.append(",").append(map2.get("menuId"));//拼接每一个map集合里面的menuid
}
req.setAttribute("menuId",sb.toString().substring(1));//最后把拿到的这个menuid集合传出去 外面根据id可查多组父子关系
}
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
3、二星权限设计(用户权限一对多)
实现思路:用户查询登陆表 有数据代表已注册 拿到角色的id 通过权限中间表拿到权限集合 最后用in关键字查出多组父子关系
如同所示:
以上是三种权限设计的简单思路 可自行去探索!