我想实现UserStore,但我也想实现UserEmailStore和UserLockoutStore和其他人。正如我注意到所有用户*商店都基于UserStore,没有问题。但是我看了一下UserManager,发现了对我来说很奇怪的事情。您可以向UserManager注入多种类型的商店,但始终只有一种。但是UserManager可以根据你注入的类型来处理它们。用户管理器用于不同的商店(UserStore,UserEmailStore,UserClaimStore,UserLockoutStore等)
福克斯示例方法GetLockoutEndDateAsync从的UserManager
public virtual async Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user)
{
this.ThrowIfDisposed();
IUserLockoutStore<TUser> userLockoutStore = this.GetUserLockoutStore();
if ((object) user == null)
throw new ArgumentNullException("user");
TUser user1 = user;
CancellationToken cancellationToken = this.CancellationToken;
return await userLockoutStore.GetLockoutEndDateAsync(user1, cancellationToken);
}
方法this.GetUserLockoutStore看起来像这样
internal IUserLockoutStore<TUser> GetUserLockoutStore()
{
IUserLockoutStore<TUser> userLockoutStore = this.Store as IUserLockoutStore<TUser>;
if (userLockoutStore != null)
return userLockoutStore;
throw new NotSupportedException(Resources.StoreNotIUserLockoutStore);
}
还有其他的方法,如
- GetEmailStore
- GetPhoneNumberStore
- GetClaimStore
- GetLoginStore
- ...
因此,这意味着商店必须根据要使用正确的接口上。
我的问题是,该如何处理?我应该根据所有可能的User * Store界面实施一个商店吗?或者你能提出另一种解决方案吗
在此先感谢
这正是我需要的。谢谢。 –