本当の DDD に移行する最初のプロジェクトで、このシナリオでどのコースを取るべきかについて、いくつかの疑問が残ります...
私は分散アーキテクチャを使用しており、複数のアプリケーションのユーザーが認証できるアカウントを 1 つだけ持っています。このアカウントは、独自のシステムで作成することも、ユーザーが自分のログイン情報を 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 サービスを介してこのプロジェクトにアクセスすることです。
そこで、json に動的なフォームを提供する単一の /Authenticate サービスについて考えました。電子メール/パスワードを含むjson、またはfacebookIdを含むjsonを作成できます。
しかし、どうすればレイヤーを接続できますか?
アプリケーション サービスを作成することを考えましたが、何が起こっているかを誰がどのように決定する必要があるか、残りのサービスがアプリケーションに何を通信する必要があるか、およびアプリケーションがそのことを行うことをどのように認識するか、それがどのような種類の認証であるかに行き詰まりました。自分のドメインのユーザーまたは Facebook のユーザーなど..
これについて何か考えはありますか?
ありがとう!