网站搭建就来徐州百都网络非常好,免费申请qq邮箱,wordpress去除帮助,做网站备案与不备案的区别数据权限是针对数据表中行级和列级的控制#xff0c;相对操作权限#xff0c;颗粒度更细#xff0c;复杂度更高#xff0c;因为在项目中也有相关需求#xff0c;是直接通过硬编码sql查询条件控制的#xff0c;后期维护起来比较困难。所以有了一些想法#xff0c;后期也将…数据权限是针对数据表中行级和列级的控制相对操作权限颗粒度更细复杂度更高因为在项目中也有相关需求是直接通过硬编码sql查询条件控制的后期维护起来比较困难。所以有了一些想法后期也将在本人springBoot框架中实现。下面细说下我的一些想法 一、行级权限数据范围1、应用场景部门查询范围、区域查询范围、只能查看本人订单等2、实现方式一般只能通过where条件去控制但通过硬编码方式灵活度和维护度不高建议通过按角色增加数据权限达到和功能权限统一3、具体实现操作建议开发人员或DB人员维护 建一个行级权限范围控制表 userId(用户id)、sql_id(mapper方法名)、type(控制类型1-本部门 2-包含下级部门 3-本用户)、isUsed(是否使用)、otherWhere(其他条件语句可添加其他字段的范围) 功能实现在用户页面添加按钮数据权限双选项卡行级数据、列级数据、行级数据录入上述表中的字段 本人用的mybatis使用拦截器拦截到sql首先判断行级权限是否启用判断sqlId是否匹配。判断类型本部门则查询登陆用户所属部门 包含下级部门则需要使用递归本用户则查询当前登陆用户的这里建议设计所有表都有这个字段create_user这样才能按部门或用户控制表数据 如果otherWhere不为空则继续追加这个查询条件二、列级权限 1、应用场景价格字段、身份证号、密码等敏感字段 2、实现方式页面循环列控制显示比如jqgrid、datatables等都是循环cols在循环时通过标签控制标签判断如果为true则显示该标签包含内容反之不显示 3、功能实现 同样先建一个列级权限范围控制表userId(用户id)、table_id(页面tableId)type(控制类型1-本部门 2-包含下级部门 3-本用户)、isUsed(是否使用),hideCols(配置隐藏的列和dataTables的columns字段相同可用逗号分割) 在用户数据权限的“列级数据”选项卡先选定按部门、含下级部门、用户录入多个隐藏的列用逗号分隔注意id不能隐藏保存 页面表格列控制本人这里使用的是shiro权限框架前端用的thymeleafdatatablse 所以用直接用shiro自定义标签其它可用自定义标签实现标签功能传参table_id,col_id根据登陆用户id、table_id、col_id,isUsed1查询 count0返回falsecol不显示 补充上述建的行级控制和列级控制两张配置表可放到redis缓存中提高查询性能通过这种方式可先只做功能权限不考虑数据权限如果有客户需求可通过需求进行配置开发这样改动的代码量相对较小而且通过拦截器实现的不影响整个后台的逻辑代码而且便于后期的统一维护和更改 这里只是目前本人的实现思路如大家有更好的实现方式可分享跟大家一起进步~~~转载于:https://www.cnblogs.com/bao666/p/9035076.html