特殊字段值和空值的安全策略

Security policy for the special field value and empty value

我已经在 AOT 中创建了一个查询。此查询用于安全策略。安全策略是关于限制采购订单表单中的每个用户只能看到为他定义的采购池。 他也应该看到哪些购买池是空的购买记录。 假设我有一个 table(映射),它将用户映射到购买池。映射 table 有两个字段 UserId 和 PurchpoolId。

如您所知,安全策略对象接受查询。我的查询在 PurchPool table 上应用内部联接,并将 table 映射到当前用户的范围。 购买 table 是在安全策略下的约束 tables 下添加的。 安全策略的第一部分,即限制用户访问未为其定义池的采购订单已正确执行。但第二部分即用户可以访问未定义任何 Pool 的采购订单仍未解决。

我如何通过查询创建安全策略,考虑到具有用户定义池和空购买池的记录?

这听起来像是我以前做过的事情。这需要一些扭曲的思维。您需要使用两个不存在的联接。

您的查询和策略都需要设置为使用不存在的联接。这样您就可以从查询中返回无效值并通过您的策略限制这些无效值。这允许 blanks/default 个值包含在您的有效数据集中。

这是我们用于业务部门的示例查询:

这是政策:

最近,我们找到了更好的解决方案,我认为它比使用 not exist join 更有效、更简单。在这里,我根据位置对固定资产 table 应用了安全策略。因此,我创建了一个查询,将 Assetlocation 连接到当前用户的映射 table。 查询可以是简单的内部连接或存在连接。在安全策略中我们应该使用constrained expression而不是constrained table。 所以在值 属性 中我们可以或两个条件如下:

(AssetTable.Location == "") || (AssetTable.Location == AssetLocation.Location))