У меня есть уровень бизнес-логики («хранилище»), который представлен в виде набора .NET-интерфейсов, поддерживаемых заменяемыми конкретными реализациями.
Первоначально у меня на этом бизнес-уровне была реализована аутентификация и авторизация (authn / authz), что означало, что у меня были интерфейсы, такие как IUserIdentity и IUserRole, и все методы, которые обращались к конфиденциальным данным, принимали IUserIdentity и выполняли авторизацию перед разрешением действия.
Бизнес-уровень до этого момента был очень независимым от внешнего интерфейса ... но теперь, когда я пытаюсь интегрироваться в веб-сайт ASP.NET, я понял, что сам ASP.NET имеет богатую систему аутентификации / авторизации встроенный в него через членство и ролевые API.
Итак, вопрос в том, должен ли я удалить все authn / authz из уровня бизнес-логики и положиться на веб-интерфейс для этого? Это сильно упростит ситуацию, но я не знаю, пожалею ли я потом об этом.
Альтернатива заключается в том, чтобы сохранить authn / authz в моей бизнес-логике, но интегрировать его с ASP.NET с помощью пользовательских провайдеров членства / ролей. Однако это кажется очень громоздким ... Мне все еще нужно выяснить стоимость этого.
Что бы вы сделали (или сделали) и почему?