1.细粒度的权限控制就是对数据层次进行权限控制,通过查询语句加上3个字段来实现,一个字段是创建人的字段,另一个是创建人所属部门,还有一个用户对应的等级字段,来判断当前用户角色,这样来控制每一个人读取到的数据不同.(粗粒度是控制对某个资源访问权限的控制,如shiro框架)示例代码
2.String hql = “from Contract where 1=1 “;
3.
4. //如何确定出用户的等级
5. User user = super.getCurUser();
6. int degree = user.getUserinfo().getDegree();
7. if(degree4){
8. //说明是员工
9. hql+=" and createBy=’"+user.getId()+"’";
10. }else if(degree3){
11. //说明是部门经理,管理本部门
12. hql+=” and createDept=’”+user.getDept().getId()+"’";
13. }else if(degree2){
14. //说明是管理本部门及下属部门?部门之间的主键有关系.
15. hql+=" and createDept like ‘"+user.getDept().getId()+"’";
16.
17. }else if(degree1){
18. //说明是副总?????
19.
20.
21. }else if(degree==0){
22. //说明是总经理
23. }
24. 跨部门跨员工的涉及多表的细粒度控制查询时,需要一张新的中间表.中间表记录当前用户所拥有的部分和人员的权限.然后createby in ‘中间表查出的数据’ createdept in ‘中间表查出的数据’
细粒度权限控制
最新推荐文章于 2024-08-06 09:00:00 发布