Как интегрировать управление доступом с моим ORM в приложении форм окон .NET?

Я разрабатываю общую базу данных инструментальные средства формирования запросов, приложение.Net 3.5 Windows Form. Для создания уровня представления, независимо от слоя базы данных. Я использую платформу ORM, XPO от DevExpress.

Но, у меня нет встроенной функции управления доступом. Я переместился по Интернету, и я нашел в Услугах передачи данных WCF, существует интересное понятие, Перехватчик, который следует за AOP (Аспектно-ориентированное программирование).

Я задаюсь вопросом, у кого есть такой опыт создать управление доступом в ORM. Мое основное требование:

  1. Это должен быть общий метод и управляемый пользователями во времени выполнения. Таким образом, любое трудное кодирование не приемлемо.
  2. Это могло быть основано на атрибуте, таблице базы данных или даже внешнем блоке.

Я готов купить готовое решение. Согласно идее AOP, функция управления доступом может быть интегрирована с существующими функциями легко и почти не сознательно предыдущему разработчику;)

Любые предложения приветствуются.

6
задан Fionnuala 4 March 2010 в 11:11
поделиться

2 ответа

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

Компания X-tensive (разработчик DataObjects.Net ORM) планирует реализовать подобную возможность для DataObjects.Net через несколько месяцев. X-tensive планирует предоставить полнофункциональное готовое к использованию расширение безопасности, возможно, основанное на атрибутах и аспектах. Конечно, оно будет тесно связано с этим ORM, но вы можете почерпнуть некоторые идеи из его описания. См. запрос функции и его обсуждение здесь.

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

1
ответ дан 17 December 2019 в 22:12
поделиться

Почему бы не создать слой между ORM и уровнем представления? Выполняя это разделение, вы можете легко переключать источники данных (в будущем ваши данные могут храниться на другом сервере и обращаться к ним через веб-службы). Я уверен, что у этого слоя есть причудливое название, но все свои интерфейсы я называю менеджерами.

Презентация -> Менеджеры -> Уровень доступа к данным -> БД

Пример:

var user = Program.Components.Get<IUserManager>().GetById(1);
user.FirstName = "Jonas";
Program.Components.Get<IUserManager>().Save(user);

В менеджерах вы можете использовать IIdentity и IPrincipal (встроены в интерфейсы управления доступом в .Net) для управления доступом. http://msdn.microsoft.com/en-us/library/ms172765 (VS.80) .aspx

0
ответ дан 17 December 2019 в 22:12
поделиться
Другие вопросы по тегам:

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