2017-03-01 27 views
1

要我把我的身份访问(身份验证和授权)在共享内核或创建一个单独的界上下文打了个比方: - IdentityAccessDDD:如何在解决方案中组织身份访问功能?

  1. 如果我把我的身份访问共享内核,则共享内核将会膨胀。共享内核应该包含基本的合同,如BaseEntity或BasicValueObject以简化开发过程
  2. 如果我选择做身份accesss在不同的限界上下文,然后给其他的限界上下文将适用权限

请记住,身份访问将包含许多功能,如用户登录和权限管理(如创建用户,规则和组)

回答

1

身份访问不应包含权限管理;这些都是在不同的上下文中的业务功能,请参阅Martin Fowler的这张照片:enter image description here

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

所以,你应该有:

  1. 上下文认证/授权
  2. 上下文的许可管理
  3. 业务上下文。

然后,您需要以这样的方式组织代码,以便用户交互始终通过(1),但以对(2)和任意数量的(3)不透明的方式进行。

具体而言,您不应该担心业务环境中的权限,因为如果用户没有适当的权限,该权限永远无法调用。