返回服务层功能的值

时间:2011-04-08 15:04:10

标签: architecture

我正在开发一个应用程序,我在我的控制器和存储库之间使用“服务”层来执行模型/业务验证。由于这是一个多租户应用程序(使用共享数据库),我需要对所有操作执行权限验证。

我不确定如何处理的一件事是在用户无法访问特定操作的情况下返回类型。例如,假设我有方法GetAccountById。通常,此方法将返回Account实体的实例(如果不存在,则返回null)。如果帐户确实存在,但当前用户无权访问它,适当的返回值是多少?我真的不想抛出异常,因为它似乎不是一个好用。所以问题是:如何提醒我的服务层(无论是控制器还是Web服务)的消费者授权无效?我应该创建某种GetAccountByIdResult类型并在其中包含函数的结果(包括任何“错误”代码,实际实体等)?

谢谢,

2 个答案:

答案 0 :(得分:2)

是的,我在服务层中所做的事实上总是包含一个“结果”对象,其中包含一个错误bool,一组错误消息(如果Error为真,你可以读取)...和那么实际的对象/资源

{
  error:true,
  messages: ['error1','error2'],
  value: { name:'blah' }
}

答案 1 :(得分:0)

记住我从来没有真正做过这件事(我记得)... 我想这取决于您执行授权的位置。

  • 如果您在服务级别强制执行,那么您可以在那里定义它;我想你可能会有一个通用的“错误”响应和/或特定服务的特定响应。
  • 如果你在存储库级别强制执行它,那么它将返回它想要的任何内容,并且你的服务层必须处理它并找出返回的内容 - 这将我们带回到第一点。