Политика безопасности для значения специального поля и пустого значения

Я создал запрос в AOT. Этот запрос используется для политики безопасности. политика безопасности заключается в ограничении каждого пользователя в форме заказа на покупку, чтобы он видел только определенные для него пулы покупок. Он должен видеть записи покупок, пулы покупок которых также пусты. Предположим, у меня есть таблица (сопоставление), которая сопоставляет пользователей с пулами покупок. Таблица сопоставления имеет два поля UserId и PurchpoolId.

Как вы знаете, объект политики безопасности принимает запрос. Мой запрос применяет внутреннее соединение к таблице PurchPool и таблице сопоставления с диапазоном текущего пользователя. таблица покупок добавляется в таблицы ограничений политики безопасности. Первая часть политики безопасности, то есть ограничение доступа пользователя к заказам на покупку, пулы которых для него не определены, выполняется правильно. Но вторая часть, то есть пользователь может получить доступ к заказу на покупку, для которого не определен какой-либо пул, остается нерешенной.

Как я могу создать политику безопасности с запросом, учитывающим записи с пользовательскими пулами, а также пустыми пулами покупок?


person Nastaran Hakimi    schedule 03.12.2019    source источник
comment
Вам нужно будет предоставить запрос и политики безопасности.   -  person Jan B. Kjeldsen    schedule 03.12.2019
comment
чувак я знаю. Я застрял в вопросе.   -  person Nastaran Hakimi    schedule 03.12.2019


Ответы (2)


Похоже на то, над чем я работал раньше. Это требует некоторого извращенного мышления. Вам нужно будет использовать два несуществующих объединения.

И ваш запрос, и ваша политика должны быть настроены на использование несуществующих объединений. Таким образом вы возвращаете недопустимые значения из своего запроса и ограничиваете эти недопустимые значения своей политикой. Это позволяет включать пробелы / значения по умолчанию в ваш действительный набор данных.

Вот пример запроса, который мы использовали для бизнес-подразделения:

образец структуры запроса  образец соединения запроса

А вот политика:

введите описание изображения здесь

person wax eagle    schedule 04.12.2019

Недавно мы нашли лучшее решение, которое, на мой взгляд, более эффективно и проще, чем использование несуществующего соединения. Здесь я применил политику безопасности к таблице основных средств в зависимости от местоположения. Итак, я создаю запрос, который присоединяет Assetlocation к моей таблице сопоставления для текущего пользователя. Запрос может быть простым внутренним соединением или существующим соединением. В политике безопасности мы должны использовать ограниченное выражение вместо ограниченной таблицы. expression Итак, в свойстве value мы можем выполнить два условия ИЛИ, как показано ниже:

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

Значение

person Nastaran Hakimi    schedule 05.11.2020