Design patterns 了解Asp.Net身份界面设计策略

Design patterns 了解Asp.Net身份界面设计策略,design-patterns,asp.net-identity,framework-design,Design Patterns,Asp.net Identity,Framework Design,Asp.net Identity Framework中提供的所有I*Store接口都继承自IUserStore。这迫使每个接口的实现实现与用户相关的方法,或者让单个类继承它们 IUserClaimStore IUserPasswordStore IUserLoginStore IUserSecurityStampStore 如果我需要为登录、密码、声明或安全戳提供不同的存储,比如Xml存储而不是EF或任何DB,那么我也需要实现与用户相关的方法(用户:CreateAAsync、UpdateAs

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

  • IUserClaimStore
  • IUserPasswordStore
  • IUserLoginStore
  • IUserSecurityStampStore
如果我需要为登录、密码、声明或安全戳提供不同的存储,比如Xml存储而不是EF或任何DB,那么我也需要实现与用户相关的方法(用户:CreateAAsync、UpdateAsync、DeleteAsync、FinDbyDasync、FindByNameAsync)

因此,提供这种体系结构背后的策略是什么?
IUserStore
定义了操作:

公共接口IUser
{
字符串Id{get;}
字符串用户名{get;set;}
}
公共接口IUserStore:IDisposable,其中TUser:IUser
{
任务CreateAsync(TUser用户);
任务DeleteAsync(TUser用户);
任务FindByIdAsync(字符串用户ID);
任务FindByNameAsync(字符串用户名);
任务更新同步(TUser用户);
}
由于每个
I*Store
都必须提供全套CRUD方法(毕竟,如果您不能
找到
更新
条目,那么
IUserPasswordStore
会有什么用?),因此它们都实现了
IUserStore


您可以实现这些接口并控制帐户数据的存储方式。您可以自定义用户帐户数据,例如,如果您想要与您的用户关联的更多数据,请将其添加到实现
IUser
的自定义用户类中,并且可以通过实现
IUserStore
来存储额外的数据,谢谢。即使我有这个想法,我也能在给你打回复时意识到。非常好的设计。IUser把我搞糊涂了,说它只代表用户,实际上它可以用来实现PasswordEntity(例如)。我很感激你的详细回答。是的,这是正确的,基本上是为了保持必需的核心所需接口的小型化,并将所有其他添加为可删除的附加可选功能(将管理器作为所有商店接口的门面)。这有点笨重,但有我们认为最好的折衷。。。