Должны ли проблемы безопасности присутствовать в модели предметной области?

Я работаю над проектом Winforms (. NET 4), который слабо основан на MVVM. В целях безопасности приложение выполняет проверку подлинности в Active Directory, а затем использует безопасность на основе ролей для определения прав доступа к различным частям программы. Безопасность реализуется с помощью PrincipalPermissionAttribute в большинстве мест, например так:

<PrincipalPermissionAttribute(SecurityAction.Demand, Role:="Managers")> _
Public Sub Save() Implements IProductsViewModel.Save
    mUOW.Commit()
End Sub

Как вы, вероятно, можете сказать из реализации интерфейса, этот конкретный Sub находится в ViewModel. Атрибут PrincipalPermissionAttribute проверяет, находится ли текущий пользователь (Thread.CurrentPrincipal) в роли менеджера.

Это приводит к моему вопросу: должны ли проверки безопасности (например, как указано выше) выполняться в модели домена?

У меня есть два противоречивых взгляда, когда я думаю об этом сам:

1) Держите модель предметной области в неведении как можно большего количества других проблем, чтобы уменьшить сложность и зависимость. (Обеспечьте безопасность, возможно, реализованную во ViewModel).

2) Модель предметной области - это своего рода место, где «деньги останавливаются». Если я реализую безопасность в модели предметной области, то я знаю, что даже если безопасность на другом уровне выйдет из строя, модель предметной области должна уловить это.

Итак, что вы скажете, безопасность в модели предметной области или нет?

6
задан Casey Wilkins 13 May 2011 в 17:17
поделиться