2014-05-21 14 views
3

Мне было интересно, где логика входа пользователя находится в типичном приложении. В моем текущем приложении кажется, что лучшим местом будет слой UI. Поэтому, если бизнес-уровень портируется на новую платформу (например, WPF на веб-странице), соответствующие платформы будут обрабатывать свою собственную безопасность. Это также, как представляется, соответствует принципам ответственности. Например, мой бизнес-уровень не заботится о том, что пользователь вошел в систему, он заботится только о том, что компонент запросил часть обработанных данных. Аналогично, мой пользовательский интерфейс определенно заботится о том, что пользователь зарегистрирован, потому что он должен знать, какие элементы управления или действия сделать видимыми.Где находится логика входа в систему? 3-Tier Application

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

Если я поместил компонент входа пользователя в общий «общий» проект, возникнут круговые зависимости.

Является ли лучшая практика действительно логикой входа пользователя в бизнес-уровень?

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

Спасибо!

+0

Безопасность/Логин * логика * должны находиться в (бизнес) слой домена; компонент ui для * визуализации * процесс входа в систему представляет собой деталь реализации уровня ui. – Maarten

+1

И вы говорите, что ваш бизнес-уровень не волнует, вошел ли пользователь в систему. Я нахожу это странным, как вы когда-либо собираетесь реализовать какую-либо аутентификацию или авторизацию? Я бы сказал, что знание того, какой пользователь входит в систему, является важной частью применения любой безопасности, которая определяется правилами * busines *, которые должны быть определены на уровне домена/бизнеса. – Maarten

ответ

4

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

+0

Спасибо за ответ. Я думаю, что это правильный ответ. Имеет смысл абстрагировать охрану в своей собственной библиотеке.Вы получаете преимущества не связывания каких-либо слоев, и если проект переносится на другую платформу внутри компании, эта платформа должна уже поддерживать библиотеку безопасности. Еще раз спасибо! – ryand

1

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

  1. Учетные данные пользователя, передаваемые в. Презентатор перенаправляет данные слою безопасности
  2. слой безопасности поддерживает свою собственную связь с DAL. Может быть отделен от остальной части B/L.
  3. DAL возвращает данные в систему безопасности, которая является токенированной или имеет ключ безопасности.
  4. Безопасность передает маркер или ключ безопасности на презентатор/контроллер для приложения
  5. Приложение обертывает или включает маркер или ключ безопасности со всеми транзакциями.

Здесь B/L может проверить маркер/ключ с помощью Security перед обработкой любой транзакции. Security Sample

Мои ссылки в основном выложу так:
Domain References

 Смежные вопросы

  • Нет связанных вопросов^_^