【问题标题】:Right place to put security validation in a DDD Project在 DDD 项目中进行安全验证的正确位置
【发布时间】:2012-05-31 19:45:41
【问题描述】:

我是“使用 C# 的 DDD”世界的新手,我有一个关于在哪里确保某些验证规则的问题。 例如,我的一个实体有一个闭包的概念,如果他的状态是 lock ,则不能更改其他属性。

放置此验证的最佳位置在哪里?将此规则带到应用层似乎不正确,仅禁止字段编辑和每个 setter 内部似乎违反了 DRY 原则。有什么建议吗?

【问题讨论】:

    标签: c# validation domain-driven-design


    【解决方案1】:

    如果该验证规则是您的域的一部分,则域对象是 definitely the right place 以放置逻辑。

    如果您担心保持代码 DRY,您有几个选择:

    1. 看看使用 Unity 或 Castle 进行拦截

    2. 将所有设置器设为私有,并拥有一个UpdateIfNotLocked() 方法,该方法采用Expression 来指示要更新的属性、属性的新值,并创建、编译和执行Expression 来设置如果对象未处于锁定状态,则该属性

    3. 咬紧牙关,在这个班级的二传手中有守卫。

    方法 1 和 2 都可能是合理的工作量/麻烦,因此在这种情况下您可能需要采取务实的方法。

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 2010-12-17
      • 2013-09-05
      • 2015-11-21
      • 1970-01-01
      • 2019-06-15
      • 2010-11-24
      • 2021-01-14
      • 2012-01-23
      相关资源
      最近更新 更多