关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 10499|回复: 0

jeecg权限设计的介绍之数据权限

[复制链接]
发表于 2015-5-16 23:51:10 | 显示全部楼层 |阅读模式
1、 基本概念
    上次我们说个一个用户从部门,角色,菜单资源,按钮权限的设计,那么出现这样一个场景。AB同时属于,某个部分销售经理,A负责北京的销售,B负责上海的销售。那么当A打开西系统的时候看到的就应该是北京的销售数据,B看到是上海的销售数据。
    这样的业务情景。在同样的情景下,jeecg也能用规则区分出来,那就是数据权限。
2、数据权限的实现2.1 jeecg 的页面实现
    新建一个用户
    11.png
    这个用户是角色是普通职员,下面新建一个菜单资源,
    22.png
    并且赋值上数据权限
    33.png
   给这个角色配置资源菜单和数据权限
    44.png
    那么用你就会发现 ,刚刚我们配置的菜单资源上的规则。不用的部门的资料真的看不见了
    55.png
    那么下面就说说jeecg 数据权限是怎么实现的
2.2 jeecg 代码实现
    jeecg 其实就只应用一张表
    66.png
    大家都听说的sql 注入。这个数据规则的实现就是根据这个原理就是在数据查询的时候 拼接上自动的sql
    77.png
    每当jeecg访问菜单的时候都会经过jeecg自定义的拦截器  
    88.png
    99.png
    但拦截器发现我们定义的菜单有 数据规则权限的时候,他就会根据 functionId 去寻找 数据权限这个表中的数据,然后把 这个表中定义的数据翻译成sql 语句 下面我是debug模式下的截图
    011.png
    那么他就会很明显的 格式化数据权限表的我们的定义的sql ,查询数据的结果就会过滤出来了。那么就试下不同部门看到了不同的数据。
    那么很明显,需要规则的字段必须是 查询表中的有的 例如 JeecgDemo.depId 肯定是上下文中找到的部门id
    jeecg 规则如下
    00.png    
3、总结
    jeecg 在角色上做了权限的控制,现在又在 数据层上做了规则的设置,将来也有可能对权限继续细化,会在表的字段做 “字段权限 ”的设置。这是后话。现在大家都jeecg权限估计有了一个大致的了解了吧。以后会更细节讲解jeecg权限问题。
10.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表