3

Asp.net Identity Framework 中提供的所有I*Store<TUser>接口都继承自IUserStore<TUser>. 这迫使每个接口的实现都实现与用户相关的方法或让单个类全部继承它们。

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

如果我需要为登录名或密码或声明或 SecurityStamps 提供不同的存储,例如 Xml 存储而不是 EF 或任何 DB,我还需要实现与用户相关的方法(用户: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);
}

由于每个人都必须提供全套 CRUD 方法(毕竟,如果你不能或条目,那么I*Store<TUser>会有什么用处?)所以他们每个人都实现了.IUserPasswordStore<TUser>FindUpdateIUserStore

您可以实现这些接口并控制帐户数据的存储方式。您可以自定义用户帐户数据,例如,如果您想要更多与您的用户相关联的数据,您可以将其添加到您实现的自定义用户类中,IUser额外的数据可以由您的IUserStore.

于 2013-12-06T11:37:52.103 回答