Предполагается, что у вас есть Business Layer
, который вы будете использовать как для внешнего внешнего веб-приложения, так и для внутреннего внутреннего приложения. Внешнее приложение всегда будет содержать имя пользователя / профиль в сеансе. Внутреннее приложение предназначено только для внутренних администраторов.
В сценарии, где у вас есть следующий метод бизнес-уровня SensitiveInfoManager.GetResource (id). Вы можете себе представить, что когда внешние пользователи вызывают этот метод, вы хотели бы, чтобы какая-то валидация гарантировала, что переданный идентификатор действительно принадлежит пользователю, который его запрашивает. Предполагая, что у вас есть правильная структура в базе данных, где вы сможете установить ссылку от запрашивающего пользователя к ресурсу, который он запрашивает. Также вы можете представить, что администратор внутреннего сайта должен иметь возможность вызывать один и тот же метод, однако этот пользователь никоим образом не привязан к ресурсу, но по определению, являясь внутренним администратором, он должен просто иметь возможность запрашивать любой ресурс, который ему нужен. .
Вопрос в том, как вам достичь этого с максимальным повторным использованием и наилучшим разделением интересов? Включаете ли вы эту проверку в бизнес-уровень, устанавливая какой-либо флаг на уровне класса, который говорит «подтвердите меня» или «не подтвердите меня» в зависимости от того, кто является потребителем. Или вы добавляете свой бизнес-уровень на Service Layer
, поручая ему авторизацию запрашиваемых ресурсов. Принуждение внешнего приложения направить запрос через уровень обслуживания, где внутреннее приложение может перейти к Business Layer
напрямую?