DDD: - 如何在解决方案中组织身份访问功能?

时间:2017-03-01 10:59:41

标签: c# domain-driven-design subdomain bounded-contexts

我应该将我的身份访问权限(身份验证和授权)放在共享内核中,还是创建一个单独的有界上下文,例如: - IdentityAccess

  1. 如果我将我的身份访问权限放在共享内核中,那么共享内核将会膨胀。共享内核应包含基本合同,如BaseEntity或BasicValueObject,以简化开发过程
  2. 如果我选择在不同的有界上下文中进行身份访问,那么其他有界上下文将如何应用权限
  3. 请记住,身份访问将包含许多功能,如用户登录和权限管理,如(创建用户,规则和组)

1 个答案:

答案 0 :(得分:1)

身份访问不应包含权限管理;这些是属于单独背景的商业功能,请参阅Martin Fowler的这张图片:enter image description here

在您的情况下,不是客户和产品,而是存在于两个有界上下文中的权限/角色/用户等。

所以你应该:

  1. 身份验证/授权的上下文
  2. 权限管理的上下文
  3. 商业背景。
  4. 然后,您需要以这样一种方式组织代码:用户交互总是经过(1)但是以对(2)和任何数量的(3)不透明的方式。

    具体来说,您不应该担心业务环境中的权限,因为如果用户没有适当的权限,它永远不应该是可调用的。