首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在哪里更好地验证某个文档的所有者?

在哪里更好地验证某个文档的所有者?
EN

Stack Overflow用户
提问于 2012-11-10 14:34:28
回答 1查看 26关注 0票数 0

我们有一个WCF服务,它有一个方法,例如,通过给定的id取消订单。此方法可由我们网站的任何用户从web上调用。

在这个方法中的某个地方,我们必须检查给定id属于当前登录的用户的顺序(我们读取授权cookie)。

在哪里做这个检查更好?

在WCF方法中,我们启动业务流程,在其中的某个地方,我们要求存储库按id加载订单。

我们可以有一些这样的开放的网络操作。我想让你忘记尽可能低的进行这种所有权检查--我想在某个狭窄的地方实现这样的检查,每个代码分支都会这样做。

我可以在存储库中进行这样的检查,但是我现在确信这种验证是它的责任。此外,我还可以通过将行为属性应用于服务或其操作来实现某种类型的声明性验证,但我不确定这是否正确,因为我们必须至少加载两次订单--首先是在执行所有权测试时,然后是在业务流程中。

EN

回答 1

Stack Overflow用户

发布于 2012-11-15 12:14:55

每个服务都有责任作为安全边界。因此,服务方法应该在调用必要的业务逻辑之前对其输入参数执行验证调用。最重要的是,您应该总是快速失败--如果方法调用无论如何都会失败,请确保它尽快失败(请参见http://en.wikipedia.org/wiki/Fail-fast)。

因此,让您的服务方法调用一个验证方法(每个服务方法编写一个验证器类),该方法可以在不允许操作时抛出验证异常,或者返回状态代码。异常通常是首选的,因为它们停止执行并强制调用堆栈对它们进行操作。

验证方法是如何工作的,这是另一回事。它可以调用存储库,并询问事务的所有者是谁。无论您实现它,工作机制都隐藏在验证器类中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13322947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档