我正在开发一个应用程序,我在我的控制器和存储库之间使用“服务”层来执行模型/业务验证。由于这是一个多租户应用程序(使用共享数据库),我需要对所有操作执行权限验证。
我不确定如何处理的一件事是在用户无法访问特定操作的情况下返回类型。例如,假设我有方法GetAccountById
。通常,此方法将返回Account
实体的实例(如果不存在,则返回null
)。如果帐户确实存在,但当前用户无权访问它,适当的返回值是多少?我真的不想抛出异常,因为它似乎不是一个好用。所以问题是:如何提醒我的服务层(无论是控制器还是Web服务)的消费者授权无效?我应该创建某种GetAccountByIdResult
类型并在其中包含函数的结果(包括任何“错误”代码,实际实体等)?
谢谢,
答案 0 :(得分:2)
是的,我在服务层中所做的事实上总是包含一个“结果”对象,其中包含一个错误bool,一组错误消息(如果Error
为真,你可以读取)...和那么实际的对象/资源
{
error:true,
messages: ['error1','error2'],
value: { name:'blah' }
}
答案 1 :(得分:0)
记住我从来没有真正做过这件事(我记得)... 我想这取决于您执行授权的位置。