数据权限控制,权限表里写了的按照权限表来,没写的则可以查看所有数据

如图有两张表,权限表中的用户会根据设置,查看不同type的数据

image.png

如何只用做一个模板,实现:在权限表中写了权限的用户查看对应的数据,而没有写权限的就可以查看主数据表中的所有type数据,求教各位大神

FineReport 访客登录 发布于 2022-2-14 17:51 (编辑于 2022-2-14 17:51)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
HHHHH123Lv7中级互助
发布于2022-2-14 18:04

select *from biao

where 1=1

${if(len(type)==0,"","and type in ('"+type+"')")}

数据库新建一个权限表

type这个参数可以写个sql函数从数据库里面取,根据登录用户匹配,匹配不到设置空,这时候就是展示全部

  • 访客登录 访客登录(提问者) 根据提供的思路,写了这个语句,测试有效,感谢提供思路 SELECT distinct type FROM 主数据 WHERE 1=1 ${if(len(SQL(\"sql\" , \"SELECT 1 FROM 权限 where user_id = \'\" + userid +\"\'\" , 1 ,1)) = 0 , \"\" , \"and type in (select type FROM 权限 WHERE user_id = \'\" + userid + \"\')\")}
    2022-02-15 14:03 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-14 17:57(编辑于 2022-2-14 18:01)

权限表的userid使用用户账号吧。就是帆软登陆得到的账号。。比较简单了

$fine_username 可以得到登陆用户的用户名

image.png

如果有这个字段,那么传入后。。。返回类型。。。把类型传给主数据表就行了。。。

假如是用户名那么就类似这样

sql语句类似这样。。

select * from 主数据表

where type=(select type from 权限表 where 用户名称='${fine_username}')

  • 访客登录 访客登录(提问者) 额,没有那么简单,麻烦看一下图片下面的那句话
    2022-02-14 17:59 
  • CD20160914 CD20160914 回复 访客登录(提问者) 我看到的。。。。。。没有返回所有数据。。这个可以再判断的。。。
    2022-02-14 18:01 
最佳回答
0
那一抹火焰蓝Lv5见习互助
发布于2022-2-15 10:43

虽然可以实现,但是这样控制权限问题很大啊。还是建议你权限表有什么权限,就看什么权限的数据,你可以加入一个ALL代表所有都能看,没有权限就不能看,后面容易维护

  • 访客登录 访客登录(提问者) 一般一个报表只开放给需要看的人,不看的人首先就不给查看的权限。老哥您说的问题会有哪些啊
    2022-02-15 14:05 
  • 那一抹火焰蓝 那一抹火焰蓝 回复 访客登录(提问者) 比如说你想给李明一个李明的权限,但是权限表里李明写成了李铭,就会导致李明看到所有数据。
    2022-02-15 16:52 
  • 访客登录 访客登录(提问者) 回复 那一抹火焰蓝 好的,感谢提醒,回头注意一下这些问题
    2022-02-15 16:59 
  • 3关注人数
  • 835浏览人数
  • 最后回答于:2022-2-15 10:43
    请选择关闭问题的原因
    确定 取消
    返回顶部