权限设置-数据权限-多角色解决!

楼主
我是社区第67981位番薯,欢迎点我头像关注我哦~
帆软提供了两种分配模板权限的途径:
1、根据部门职位分配
2、根据角色分配
模板权限的分配课查看帮助文档:


使用职位分配权限时,数据权限的配置。如果使用老师编码作为登录名,
比如人员结构表如下:
老师 老师编码 登录密码 部门 职位 角色 备注
张三 123 111 数学教务组 老师 1 老师查看自己的数据
李四 124 112  数学教务组 组长 2 组长查看组内的数据

按照职位判断数据权限:
数据集中示例如下: select 学生,老师,老师编号 from table where 1=1 ${if(GETUSERJOBTITLES()=="老师","老师编码='"+$fr_username+"'","")}
按照角色判断数据权限:
数据集中示例如下: select 学生,老师,老师编号 from table where 1=1 ${if($fr_authority=="1","老师编码='"+$fr_username+"'","")}
select 学生,老师,老师编号,老师部门 from table where 1=1 ${if($fr_authority=="2","部门='"+GETUSERDEPARTMENTS()+"'","")}
使用角色分配权限时,数据权限的配置。如果使用老师编码作为登录名,
老师 老师编码 登录密码 部门 职位 角色 备注
张三 123 111 数学教务组 老师数学组老师 老师查看自己的数据
李四 124 112  数学教务组 组长数学组组长 组长查看组内的数据


按照角色判断数据权限:
数据集中示例如下: select 学生,老师,老师编号 from table where 1=1 ${if($fr_authority=="数学组老师","老师编码='"+$fr_username+"'","")}
select 学生,老师,老师编号,老师部门 from table where 1=1 ${if($fr_authority=="数学组组长","部门='"+GETUSERDEPARTMENTS()+"'","")}

这种分配方式正常使用中没有什么问题,但当有员工是兼职几个角色等情况时数据权限就会失效。
后来想到一个解决方案如下:
select 学生,老师,老师编号,老师部门 from table where 1=1 ${switch("老师",indexofarray(fr_authority,1),"老师编码='"+$fr_username+"'"
,indexofarray(fr_authority,2),"老师编码='"+$fr_username+"'"
,indexofarray(fr_authority,3),"老师编码='"+$fr_username+"'"
,indexofarray(fr_authority,4),"老师编码='"+$fr_username+"'"
)
这种方法测试了下貌似可行,但没有实际应用。同时希望大家能够集思广益提供点更好的方法。





分享扩散:

沙发
发表于 2016-6-4 17:56:49

感謝分享!!!
板凳
发表于 2023-9-19 11:35:58
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2回帖数 1关注人数 18626浏览人数
最后回复于:2023-9-19 11:35

返回顶部 返回列表