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

Аналогичен ответу на bouncyball, но он сохраняет порядок столбцов и использует универсальный идентификатор в случае, если (LoB, AY) не является первичным ключом:

df %>% 
  mutate(id = 1:n()) %>% 
  gather(old_name, value, starts_with("R_")) %>% 
  arrange(id, nchar(old_name), old_name) %>% 
  group_by(id) %>% 
  mutate(value = cumsum(value)) %>% 
  ungroup() %>% 
  select(-id) %>% 
  spread(old_name, value) %>% 
  select(names(df)) %>% 
  select(AY, everything())
6
задан GEOCHET 28 April 2009 в 19:53
поделиться

3 ответа

  1. Добавьте ключ защиты к своим объектам, составьте таблицу для полномочий и свяжите пользователя с разрешением с entitytype и также с ключом защиты с ролью. Таким образом, можно сказать вещи как: Admin_role могут получить доступ к Студенту (тип Entitiy) и действительно читают (Операция в Разрешении) и Запись (Операция), в то время как Student_role может получить доступ к Student_key для him-/herself и Read_permission. Можно зафиксировать адрес путем рефакторинга этого в объект и добавления ключа защиты к нему.

    1. Ваш номер четыре мог иметь предположение закрытого мира и сказать, что, если Вы не можете для текущей роли пользователя, связать имя свойства с флагом в словаре (entity+property) - хеш для установки флага причем закрытое мировое предположение - который чтения не позволяются по умолчанию. Затем, конечно, Вы не получаете полномочий записей и т.д.

    2. Можно определить представления в базе данных и присвоить права им использующий систему аутентификации базы данных. Это - вероятно, большая часть очевидного способа, если Вы можете кодировать себя, способ выбрать, какое представление назвать, в зависимости от которой роли мы. (Мой бывший учитель RDBMS любил бы меня в то, что я сказал это ;)) Это также уходит немного от, в спящем режиме, и связывает Ваш материал больше с базой данных. Это зависит от того, насколько подвижный/портативный Ваш код должен быть, я предполагаю.

    3. Используйте аспект вокруг своего универсального дао (IRepository), который переписывает запросы на основе Ваших полномочий; это подразумевает, что у Вас есть основанная на разрешении безопасность в коде, конечно.

Кнопка редактирования, скрывающаяся в gui, может действительно только быть сделана при первом портировании полномочий кодировать, как в моей точке 1. Я предлагаю, чтобы Вы взглянули на блог Ayendes для реализации с открытым исходным кодом этого, он - очень квалифицированный кодер.

3
ответ дан 17 December 2019 в 02:34
поделиться

Другая опция могла бы состоять в том, чтобы использовать пользовательские типы. Например, вместо того, чтобы отобразить символ на Строку, отобразите его на пользовательский тип как SecureString. Дайте ему параметр с некоторым уникальным идентификатором в отображении, например, table.column. Затем в nullSafeGet методе пользовательского типа, можно обратиться к службе безопасности, чтобы видеть, заполнить ли значение или просто установить его в NULL. Необходимо было бы проуспешно также использовать ThreadLocal для хранения чего-то для идентификации пользователя или роли. Необходимо было бы только создать горстку пользовательских типов для обертывания строки, дважды, даты, целого числа, и т.д. Я сделал что-то подобное, чтобы позволить датам быть преобразованными в часовой пояс пользователя.

2
ответ дан 17 December 2019 в 02:34
поделиться

Мне нравится предложение Henrik использования представлений.

Будьте в спящем режиме фильтры могли бы работать, но я думаю, что это больше для того, чтобы отфильтровать строки, а не столбцы.

Вы могли также использовать [Основанные на карте Динамические модели] (http://www.hibernate.org/hib_docs/reference/en/html/persistent-classes-dynamicmodels.html) наряду с отдельным [именованные запросы] (http://www.hibernate.org/hib_docs/reference/en/html/querysql-namedqueries.html) вместо того, что частично заполнили бобы. Затем Ваш код представления просто проверил бы, содержала ли Карта запись для 'адреса', и покажите поле, если найдено?
1
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: