我正在开发一个应用程序,并在我的控制器和存储库之间使用“服务”层来执行模型/业务验证。由于这是一个多租户应用程序(使用共享数据库),因此我需要对所有操作执行权限验证。服务层功能的返回值
我不确定如何处理的一件事是返回类型,以防用户无法访问特定操作。例如,假设我有一个方法GetAccountById
。通常,此方法将返回Account
实体的实例(如果不存在,则返回null
)。在帐户确实存在的情况下,适当的返回值是多少,但当前用户无权访问?我真的不想抛出异常,因为它似乎不适合用于其中之一。所以问题是:我如何警告我的服务层的使用者(无论是控制器还是Web服务)授权无效?我应该创建一些类型的GetAccountByIdResult
类型,并在其中包含函数的结果(包括任何“错误”代码,实际实体等)?
感谢,
你有一个通用的“结果”对象或许多取决于方法吗? – 2011-04-08 15:09:05
它取决于涉及的技术......我通常尝试拥有一个通用的结果对象。当从javascript访问rest/json服务时,使得它非常容易,因为json是动态输入的。如果客户端是一种静态类型的语言(java,c#等),那么我将拥有一个具有“对象”值的通用类型,或者如果情况需要,则使用强类型值。通常,如果我是客户端的作者,我会使用对象,因为我很容易输出结果。但是,如果我正在为其他消费者撰稿,我通常会强烈地打字 – 2011-04-08 15:11:52