【发布时间】:2012-10-30 15:37:18
【问题描述】:
我们有一个 WCF 服务,该服务具有一种方法,例如,通过给定 id 取消订单。 我们网站的任何用户都可以从网络上调用此方法。
在这个方法的某个地方,我们必须检查具有给定 ID 的订单是否属于当前登录的用户(我们读取授权 cookie)。
在哪里执行此检查更好?
在 WCF 方法中,我们启动业务流程,并在其中某处要求存储库按 id 加载订单。
我们可以有许多这样的对网络开放的操作。而且我想让忘记做这样的所有权检查的可能性尽可能低——我想在每个代码分支都会去的某个狭窄的地方实施这样的检查。
我可以在存储库中进行这样的检查,但我现在确信这种验证是它的责任。 此外,我可以通过将行为属性应用于服务或其操作来实现某种声明性验证,但我不确定这是正确的地方,因为我们必须至少加载订单两次 - 首先是在执行所有权时测试,然后在业务流程中。
【问题讨论】:
标签: architecture application-design