在我的第一个真正的 DDD 项目中,我对在这种情况下采取哪种课程持怀疑态度......
我有一个分布式架构,其中多个应用程序的用户将只有一个帐户,使他们能够进行身份验证。此帐户可以在我们自己的系统上创建,或者用户可以与我们分享他与 facebook、google 和其他第三方帐户提供商的登录信息。
因此,有一个项目仅用于此目的,控制用户帐户。
这种情况使我在我的模型中采用了这种方法(简化):
public class User
{
public User(string name)
{
Id = Guid.NewGuid();
Name = name;
}
public Guid Id { get; protected set; }
public string Name { get; protected set; }
}
public abstract class Account
{
protected Account(User user)
{
Id = Guid.NewGuid();
User = user;
}
public Guid Id { get; protected set; }
public User User { get; protected set; }
}
public class MySystemAccount : Account
{
public MySystemAccount(string email, string password, User user)
: base(user)
{
Email = email;
Password = password;
}
public string Email { get; protected set; }
public string Password { get; protected set; }
}
public class FacebookAccount : Account
{
public FacebookAccount(string facebookId, User user)
: base(user)
{
FacebookId = facebookId;
}
public string FacebookId { get; protected set; }
}
问题是其他应用程序将通过 REST 服务访问该项目。
所以,我想到了一个单一的 /Authenticate 服务,它将提供一个动态形式的 json。它可以是带有电子邮件/密码的 json,也可以是带有 facebookId 的 json。
但是,我怎样才能连接这些层呢?
我想过做一个应用程序服务,但我被困在谁和如何决定发生了什么,我的休息服务应该与应用程序通信什么以及应用程序将如何知道做这件事,无论是哪种身份验证,来自我自己域的用户或来自 facebook 的用户等等..
对此有什么想法吗?
谢谢!