我已经在AOT中创建了一个查询。此查询用于安全策略。安全策略是关于限制购买订单表单中的每个用户只能看到为他定义的购买池。他应该看到购买记录,购买池也是空的。假设我有一个表(映射),它将用户映射到购买池。映射表有两个字段UserId和PurchpoolId。
如您所知,安全策略对象接受查询。我的查询在PurchPool表和具有当前用户范围的映射表上应用了内连接。Purch表被添加到安全策略下的constraint tables下。安全策略的第一部分,即限制用户访问未为其定义的池的采购订单是正确执行的。但第二部分,即用户可以访问任何池没有定义的采购订单仍然没有解决。
如何通过查询创建安全策略,同时考虑具有用户定义的池和空购买池的记录?
发布于 2019-12-04 12:36:30
这听起来像是我以前做过的事情。这需要一些扭曲的想法。您需要使用两个not-exists连接。
查询和策略都需要设置为使用not-exist联接。这样,您将从查询中返回无效值,并通过您的策略限制这些无效值。这允许在有效数据集中包含空白/默认值。
以下是我们用于业务部门的示例查询:


这是政策:

发布于 2020-11-05 17:39:22
最近,我们找到了更好的解决方案,我认为它比使用not exist join更有效、更简单。在这里,我根据位置对固定资产表应用了安全策略。因此,我创建了一个查询,将Assetlocation连接到当前用户的映射表。查询可以是简单的内连接或exist连接。在安全策略中,我们应该使用约束表达式而不是约束表。

因此,在value属性中,我们可以对两个条件执行OR操作,如下所示:
(AssetTable.Location == "") || (AssetTable.Location == AssetLocation.Location)

https://stackoverflow.com/questions/59151656
复制相似问题