Каталог доступа к архитектуре Onion и база данных приложений

Я немного застрял в луковой архитектуре.

Скажем, я разрабатываю приложение, в котором пользователь может зарегистрировать учетную запись, войти в систему и поддерживать свою учетную запись (например, изменить номер телефона).

Однако, пока они вошли в систему, они могут выполнять другие действия в приложении (например, создавать продукты, добавлять записи в блог, отправлять сообщения с прикрепленными фотографиями и т. д.).

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

Все службы приложений сохраняются в базе данных Postgresql.

Все функции управления пользователями и вход в их учетную запись выполняются LDAP 389 Directory Server. Я буду использовать пакет Novell.Directory.Ldap, так как он будет работать на моно, а поддержка System.DirectoryServices.Protocols пока отсутствует.

И база данных приложения, и сервер каталогов имеют уникальные таблицы.

Нужно ли размещать в App.Domain.Entities как объекты базы данных приложений, так и модели службы каталогов LDAP?

С технической точки зрения у меня есть 2 разных типа баз данных с разными типами моделей.

Не совсем уверен, как подойти к этому.

Моя структура решения:

  • Domain
    • App.Domain.Entities
    • Приложение.Домен.Интерфейсы
  • Infrastructure
    • App.Infrastructure.Data (FluentNHibernate)
    • App.Infrastructure.DependecyResulution (SimpleInjector)
    • Приложение.Инфраструктура.Интерфейсы
    • App.Infrastructure.Logging (NLog)
    • App.Infrastructure.LDAP (Novel.Directory.Ldap)
  • Services
    • App.Services.Interfaces
  • Web
    • App.Web.UI (ASP.NET MVC 4 Razor)

Я почти уверен, что делаю это неправильно. Может кто-нибудь указать мне правильное направление с каким-то псевдопримером. например Куда идут модели и т.д.

заранее спасибо


person Shane van Wyk    schedule 24.12.2014    source источник


Ответы (1)


Для приложений единого входа вы, вероятно, захотите перенести всю безопасность в отдельную службу, которая работает напрямую с вашим LDAP-провайдером. Таким образом, вы не будете тесно связывать код LDAP конкретного продукта с вашим веб-приложением. Затем ваше веб-приложение может вызвать службу безопасности, передав ей учетные данные для входа пользователя, вошедшего в ОС. Таким образом, если вам нужно предоставить разрешения группам пользователей или пользователей, вы можете просто получить логическое значение от службы безопасности, указывающее, авторизован ли этот вошедший в систему пользователь.

person Eddie    schedule 30.12.2014
comment
Я все еще немного смущен. Поскольку приложение единого входа используется не только для входа в систему, они также могут изменять свои данные / поддерживать учетную запись. Я просто не уверен, нужно ли объектам LDAP входить в домен или вся реализация для связи с LDAP должна идти в своем собственном уникальном проекте. - person Shane van Wyk; 07.01.2015
comment
Я предлагаю поместить материал LDAP в отдельный уникальный проект. - person Eddie; 13.01.2015