gpt4 book ai didi

c# - IUserStore.CreateAsync : how to indicate failure in custom implementation?

转载 作者:太空狗 更新时间:2023-10-29 23:06:28 27 4
gpt4 key购买 nike

我正在为 IUserStore 编写自定义实现。创建方法的签名是:

public async virtual Task CreateAsync(TUser user)

考虑到 Microsoft.AspNet.Identity 中的核心接口(interface) IUserStore 是(相同的),这是有道理的。

但是在 Microsoft.AspNet.Identity 中定义的 UserManager 类的接口(interface)是:

public virtual Task<IdentityResult> CreateAsync(TUser user);

我的问题是我不知道应该如何将此 IdentityResult 传递给 UserManager,因为商店中的返回类型只是“任务”。我有一个自定义逻辑来确定是否可以创建用户,所以我确实需要将 CreateAsync 的结果告诉 UserManager。

有什么想法吗?

最佳答案

查看 source code for UserManager.CreateAsync (这是针对身份 2.0 的)您可以在调用 IUserStore.CreateAsync 之前看到它, 它会调用 IIdentityValidator<TUser>.ValidateAsync ,负责实际返回相关的 IdentityResult对象:

public virtual async Task<IdentityResult> CreateAsync(TUser user)
{
ThrowIfDisposed();
await UpdateSecurityStampInternal(user).ConfigureAwait(false);
var result = await UserValidator.ValidateAsync(user).ConfigureAwait(false);
if (!result.Succeeded)
{
return result;
}
if (UserLockoutEnabledByDefault && SupportsUserLockout)
{
await GetUserLockoutStore().SetLockoutEnabledAsync(user, true).ConfigureAwait(false);
}
await Store.CreateAsync(user).ConfigureAwait(false);
return IdentityResult.Success;
}

IUserStore.CreateAsync的主要目的|是调用保存数据的底层数据源。看来你 make 其实是想实现 IIdentityValidator<TUser>并将其设置在您的 UserManager 上实例。

关于c# - IUserStore<TUser>.CreateAsync : how to indicate failure in custom implementation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927571/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com