【发布时间】:2021-07-01 06:39:11
【问题描述】:
我正在尝试基于单独的用户表在一个表上实现行级安全性。我在 this 这样的地方看到过这个话题,但我的情况还没有解决。
用户表:
交易表:
我要保护的表称为事务。每行中的一个字段是 CompanyID。用户表包含三列:AccountID、UserEmail 和 CompanyID。我想要的是只有分配给给定 CompanyID 的用户才能使用这些 CompanyID 查看 Transactions 表中的行。
由于多个用户可以查看给定的行,因此我在 CompanyID 字段中建立了从 Transactions 到 Users 的一对多关系。
我创建了一个 DAX 表达式,它使用以下内容过滤用户表:
[UserEmail] = USERPRINCIPALNAME()
当我在 Power BI Desktop 中选择“查看为 -> 其他用户”并输入随机电子邮件时,我仍然可以看到整个报表。知道我遗漏了什么吗?
编辑: 我省略了一个重要的规定:任何与 CompanyID 为 1 关联的用户都可以查看 Transaction 表的所有记录。我尝试过类似的方法
[UserEmail] = USERPRINCIPALNAME() ||
COUNTROWS(FILTER('Users', [UserEmail] = USERPRINCIPALNAME() && [CompanyId] = 1)) = 1
但它们不起作用。即使是 CompanyId 为 1 的用户也被禁止查看表格。
【问题讨论】:
标签: powerbi dax row-level-security