sql数据集实现权限控制问题

请教大佬, oracle数据 要实现 专门权限表来控制 用户查看的数据权限,

有什么好办法吗?

直接用sql来写 oracle好像不好实现,没办法实现拼接过滤条件,

比如在where后面接 case when 表达式 then 表达式 ,oracle是不行的。

不知道各位大佬有没有什么好办法。

FineBI yzmTZTQK0727261 发布于 2023-1-11 17:01
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
吾姓独孤Lv6高级互助
发布于2023-1-11 17:06(编辑于 2023-1-11 17:08)

加个条件不就得了,比如你用登录名去控制

SELECT * FROM TABLE WHERE '${fine_username}' = '张三'

这样你必须是张三登录才有数据,不是张三没有数据

同理,部门角色也可以控制,范围更广,你可以单独给某些人设置一个共同的角色去控制

如果你要实现不同人看不同内容

你就unionall 起来就行了

  • yzmTZTQK0727261 yzmTZTQK0727261(提问者) 我是有多个过滤条件进行控制,有个专门的权限表控制,比如用部门控制 是没有问题, 就是还可能不用部门 用其他条件来控制 ,这个是不确定的,where后面就是要用条件来判断 , 这样的方式oracle就没办法实现吧
    2023-01-11 17:15 
  • 吾姓独孤 吾姓独孤 回复 yzmTZTQK0727261(提问者) 没懂你意思,比如什么其他条件呢,如果不是帆软的条件,比如你要通过身高去控制,那你也得先做个中间表存储帆软用户对应的身高,类似这样,就是不论你什么条件,你最后要做到权限控制,你都得依据帆软里登录的信息,不管登录名还是实际名称还是电话啊邮箱啊,部门啊角色啊,最后都必须要和帆软的这些登录信息关联的,要不你怎么判断谁有权限谁没权限呢,比如你不用帆软的登录信息,你想通过一个权限表对吧,那张三登录他怎么判断有没有权限呢,李四登录和张三登录没有区别啊,你必须要通过谁登录的什么信息去区分的,哪怕中间做个中间表,最后对应的也还是登录信息才行
    2023-01-11 17:21 
  • yzmTZTQK0727261 yzmTZTQK0727261(提问者) 回复 吾姓独孤 是用登录信息, 就是我的权限表比如 有部门 职位 渠道 之类的条件控制, 有些用户用部门来过滤数据, 有些用户用职位来过滤, 这样的形式, 那我写sql的话 不是 要 条件里面写 case when 来判断用哪个字段来过滤? 这个oracle没办法支持
    2023-01-11 17:28 
  • 吾姓独孤 吾姓独孤 回复 yzmTZTQK0727261(提问者) 咋会不支持,你不会用公式的话可以先看看帮助文档,公式怎么用的,数据集里怎么用公式
    2023-01-12 09:21 
  • 吾姓独孤 吾姓独孤 回复 yzmTZTQK0727261(提问者) 我oracle都用3年了,你告诉我不支持。。。
    2023-01-12 09:22 
最佳回答
0
用户S5182147Lv6中级互助
发布于2023-1-12 09:20

可以参考,其它的权限控制基本都是大同小异:

where 1=1

${if(len(sql("数据集连接名称","select 权限字段 from 权限表 where 用户名字段 = '"+fineusername+"'",1,1))=0,"and 1=0","and 部门 in (select 权限字段 from 权限表 where 用户名字段 = '"+fineusername+"')")}

  • 3关注人数
  • 588浏览人数
  • 最后回答于:2023-1-12 09:20
    请选择关闭问题的原因
    确定 取消
    返回顶部