我是 DDD 的初学者,有一个关于如何为特定域用例实现授权不变量的问题。
我有两个子域:成员身份和身份。身份处理身份验证和管理用户和角色。
有问题的子域是成员资格。成员可以有多种状态。激活成员时,存在三个不变量:
分会管理员只能激活其分会中的成员
分会管理员只能激活非活动成员。
系统管理员可以激活任何状态的任何成员。
用户有角色。这种情况下的角色是系统管理员和章节管理员(单个章节)。
所以我有一个应用程序服务。用户 ID 存储在 .Net Identity 中,但我觉得让应用程序服务不知道 .Net Identity 是个好主意吗?
public void ActivateMember(UserId userId, MemberId memberId)
{
//This handles invariants 1 & 3
memberAccess.DoesUserHaveAccessToMember(userId, memberId);
//But how to I handle 2?
//here is the call into the domain
commands.Handle(new ActivateMember(memberId);
}
怎么处理2?命令处理程序是一个域服务,它只加载成员、调用其 activate 成员并将其持久化。身份域中的身份验证服务是否应该被推得那么远?我可以在上面的类中实现 2,但是我必须从存储库中加载该成员两次。那不好吗?
拉丁的传说
相关分类