Возвращаемые значения для функций уровня сервиса - PullRequest
0 голосов
/ 08 апреля 2011

Я занимаюсь разработкой приложения и использую уровень «обслуживания» между контроллерами и репозиториями для проверки моделей / бизнес-проверок. Поскольку это мультитенантное приложение (с общей базой данных), мне нужно выполнить проверку разрешений для всех операций.

Одна вещь, которую я не уверен, как обращаться с типами возвращаемых данных, если пользователь не имеет доступа к определенной операции. Например, скажем, у меня есть метод GetAccountById. Обычно этот метод возвращает экземпляр объекта Account (или null, если он не существует). Каким будет соответствующее возвращаемое значение в случае, если учетная запись существует, но текущий пользователь не имеет к ней доступа? Я на самом деле не хочу бросать исключение, так как оно вряд ли пригодится. Поэтому возникает вопрос: как я могу предупредить потребителя моего уровня обслуживания (будь то контроллер или веб-служба), что авторизация недействительна? Должен ли я просто создать какой-то тип GetAccountByIdResult и включить в него результат функции (включая любые коды «ошибок», фактическую сущность и т. Д.)?

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Да, то, что я делаю на своем сервисном уровне, на самом деле всегда включает в себя объект «result», который содержит ошибку bool, набор сообщений об ошибках (которые вы можете прочитать, если Error true) ... и затем фактический объект / ресурс

{
  error:true,
  messages: ['error1','error2'],
  value: { name:'blah' }
}
0 голосов
/ 09 апреля 2011

Имея в виду, мне никогда не приходилось делать это (что я помню) ... Я думаю, это зависит от того, где вы применяете авторизацию.

  • Если вы применяете это на уровне обслуживания, вы бы это определили; Я полагаю, вы могли бы иметь общий ответ «ошибка» и / или конкретные ответы для определенных служб.
  • Если вы применяете его на уровне репозитория, то это вернет все, что он хочет, и ваш уровень обслуживания должен будет обработать это и выяснить, что возвращать - что возвращает нас к первому пункту.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...