领域驱动设计与安全

7
这与此问题相关,似乎是一段时间前提出的。在遵循领域驱动设计基本原则的项目中实现安全性。让我举个例子:

银行系统:
用例:正在进行新的银行存款,并需要批准,因为这是第一次存款

a.如果存款金额小于5000,则职员可以自动授权
b.经理可以分为两种类型 - 银行经理/账户经理。仅帐户经理可以授权任何存款大于5000的帐户

我的担忧如下(如果担忧本身正确,请纠正)

  1. 不确定应该在哪里构建以下逻辑 - 负责检查已登录用户是否有权限执行某些操作,考虑到他的职称 - (此案例中的账户经理)。授权是一个用例,但安全层似乎对领域对象有了深入的了解
  2. 通常情况下是授权(而非认证)。我知道基于角色的身份验证会有所帮助,但问题是“在哪里” - 在哪个层和调用流程。UI层是否要调用某些安全层,还是领域层要验证所有可能的组合?

请帮忙解决。这非常令人困惑。

提高一下,看看是否引起专家的注意

干杯

1个回答

4

安全是一种贯穿所有类、方法和属性的设计特征。

从DDD的角度来看,您可以使用规范和角色。

这些规范在哪里以及如何实现取决于您的架构。您可以选择方面,也可以选择内联调用、事件等。

以下是一些有关安全性和角色的链接:


谢谢您的快速回复。我正在查看。 - VJVRR
感谢您的快速回复。RBAC是一个有趣的链接,但我更想看一些示例/快速接口/类,以便了解它可能会是什么样子。作为新手,理论上可以理解,但在学习阶梯上实践起来还需要时间。 - VJVRR
1
持久化时已经太晚了。在执行领域逻辑之前,您应该进行授权。而不是在执行逻辑并尝试持久化之后再进行授权。 - mynkow
1
@tuespetre 他指的是持久化/基础设施层(即在领域对象创建后)。在我看来,授权太模糊/泛泛的术语了。实际上,问题中的例子是领域逻辑。应该在领域中处理。 - Tudor
1
@Tudor 又过了一年多,我不得不说我同意你们两个的观点。问题描述了应该在领域中建模的规则,但应用/服务层负责协调领域对象之间的交互,从而确保授权逻辑实际上被调用。 - tuespetre
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接