Django: как получить записи только того региона, который принадлежит пользователю? - PullRequest
1 голос
/ 10 апреля 2019

Данные:

  1. Таблица транзакций с полем региона (доступ на чтение только для базы данных Oracle).
  2. Таблица пользователей в Excel с полем региона. (Я могу добавить эту таблицу во вторичную базу данных)

Аутентификация LDAP используется.

Используя представления ( используется необработанный SQL-запрос ), я показываю агрегированные данные таблицы транзакций.

Все пользователи видят одни и те же данные, поскольку в регионе нет фильтра.

Теперь я хочу объединить только те записи, к которым относится регион входа пользователя.

Как это можно реализовать?

Мой подход:

  • Создание модели региона
  • Реализация внешнего ключа с таблицами транзакций (возможно ли это?)

Каков наилучший подход к этому сценарию?

Пожалуйста, объясните четко в шагах.

ПРИМЕЧАНИЕ: Я решил свою проблему. Пожалуйста, посмотрите мой ответ. Есть ли недостатки моего подхода? (Новый лучший подход приветствуется)

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Я решил это, выполнив следующие шаги.

Шаги:

  1. Создан DataFrame пользовательской таблицы в Excel с использованием Pandas в моем views.py.
  2. Захватил идентификатор пользователя для входа в переменную.
  3. Отфильтровал этот идентификатор пользователя в DataFrame и получил его / ее регион, а затем я передал эту переменную в окончательный агрегирующий запрос и отфильтровал ее там.

Коротко и просто.

0 голосов
/ 11 апреля 2019

Вы пытаетесь добиться точного управления доступом на основе данных к данным в вашей базе данных. Вы не должны реализовывать это в своем коде, а скорее делегировать его на уровень авторизации.

Поставщики реляционных баз данных имеют различные способы решения этой проблемы, например FGAC. Область в целом известна как динамическое маскирование данных. Я работаю в компании, которая предоставляет прокси на основе политик, который эффективно отфильтровывает и маскирует ваши данные так, что вы видите только те данные, которые принадлежат региону, к которому принадлежит пользователь. Он называется Аксиоматический фильтр доступа к данным .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...