Architecture 服务层函数的返回值
我正在开发一个应用程序,并在控制器和存储库之间使用“服务”层来执行模型/业务验证。由于这是一个多租户应用程序(带有共享数据库),我需要对所有操作执行权限验证 有一件事我不确定如何处理,那就是在用户无法访问特定操作的情况下返回类型。例如,假设我有一个方法Architecture 服务层函数的返回值,architecture,Architecture,我正在开发一个应用程序,并在控制器和存储库之间使用“服务”层来执行模型/业务验证。由于这是一个多租户应用程序(带有共享数据库),我需要对所有操作执行权限验证 有一件事我不确定如何处理,那就是在用户无法访问特定操作的情况下返回类型。例如,假设我有一个方法GetAccountById。通常,此方法将返回帐户实体的实例(如果不存在则返回null)。如果帐户确实存在,但当前用户没有访问权限,那么适当的返回值是多少?我真的不想抛出异常,因为它似乎不是一个很好的用途。因此,问题是:如何提醒我的服务层(无论是
GetAccountById
。通常,此方法将返回帐户
实体的实例(如果不存在则返回null
)。如果帐户确实存在,但当前用户没有访问权限,那么适当的返回值是多少?我真的不想抛出异常,因为它似乎不是一个很好的用途。因此,问题是:如何提醒我的服务层(无论是控制器还是web服务)的使用者授权无效?我是否应该创建某种类型的GetAccountByIdResult
类型,并在其中包含函数的结果(包括任何“错误”代码、实际实体等)
谢谢,是的,我在服务层所做的实际上总是包括一个“result”对象,其中包含一个错误bool,一个错误消息的集合(如果
error
为true,您可以读取这些消息)。。。然后是实际的对象/资源
{
error:true,
messages: ['error1','error2'],
value: { name:'blah' }
}
记住我从来没有真正做过这件事(我记得)。。。 我想这取决于你在哪里执行授权
- 如果您在服务级别强制执行它,那么您将在那里定义它;我想您可能会有一个通用的“故障”响应和/或特定服务的特定响应
- 如果您在存储库级别强制执行它,那么它将返回它想要的任何内容,而您的服务层将必须处理该问题并确定返回的内容—这让我们回到了第一点