3

Asp.net Identity Framework で提供されるすべてのI*Store<TUser>インターフェイスは から継承されてIUserStore<TUser>います。これにより、すべてのインターフェースの実装にユーザー関連のメソッドを実装するか、単一のクラスにそれらすべてを継承させることが強制されます。

  • IUserClaimStore<TUser>
  • IUserPasswordStore<TUser>
  • IUserLoginStore<TUser>
  • IUserSecurityStampStore<TUser>

ログイン、パスワード、クレーム、またはセキュリティスタンプに別のストレージを提供する必要がある場合、たとえば EF や任意の DB の代わりに Xml ストレージを提供する必要がある場合は、ユーザー関連のメソッドも実装する必要があります (ユーザー: CreateAsync、UpdateAsync、DeleteAsync、FindByIdAsync、FindByNameAsync)。

では、このアーキテクチャを提供する背後にある戦略は何でしょうか?

4

1 に答える 1

2

IUserStore<>CRUD操作を定義します。

public interface IUser
{
   string Id { get; }
   string UserName { get; set; }
}

public interface IUserStore<TUser> : IDisposable where TUser : IUser
{
   Task CreateAsync(TUser user);
   Task DeleteAsync(TUser user);
   Task<TUser> FindByIdAsync(string userId);
   Task<TUser> FindByNameAsync(string userName);
   Task UpdateAsync(TUser user);
}

それぞれI*Store<TUser>が CRUD メソッドの完全なセットを提供する必要があるため (結局のところ、be のようなものやエントリを使用IUserPasswordStore<TUser>できませんか?)、それぞれが を実装します。FindUpdateIUserStore

これらのインターフェイスを実装して、アカウント データの保存方法を制御できます。ユーザー アカウント データをカスタマイズできます。たとえば、ユーザーに関連付けるデータがさらに必要な場合は、それを実装するカスタム ユーザー クラスに追加します。IUser余分なデータは の実装によって保存できますIUserStore

于 2013-12-06T11:37:52.103 に答える