0

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

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

考虑到用户定义的 Pools 和空 Purchase Pools 的记录,如何使用查询创建安全策略?

4

2 回答 2

2

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

您的查询和策略都需要设置为使用不存在的连接。这样,您将从查询中返回无效值,并通过您的策略限制这些无效值。这允许空白/默认值包含在您的有效数据集中。

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

示例查询结构 示例查询连接

这是政策:

在此处输入图像描述

于 2019-12-04T04:36:29.787 回答
0

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

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

价值

于 2020-11-05T09:39:22.413 回答