答えはここに、in the source codeある記事の執筆時点でのUserManagerでの実装の一部です:
public virtual async Task<IdentityResult> CreateAsync(TUser user,
CancellationToken cancellationToken = default(CancellationToken))
{
ThrowIfDisposed();
await UpdateSecurityStampInternal(user, cancellationToken);
var result = await ValidateUserInternal(user, cancellationToken);
if (!result.Succeeded)
{
return result;
}
if (Options.Lockout.EnabledByDefault && SupportsUserLockout)
{
await GetUserLockoutStore().SetLockoutEnabledAsync(user, true, cancellationToken);
}
await UpdateNormalizedUserNameAsync(user, cancellationToken);
await Store.CreateAsync(user, cancellationToken);
return IdentityResult.Success;
}
だから、基本的に、彼らは常にtrueを返します。これは、現在のバージョンでは、私の作成チェックをUserStoreに置くことは、フレームワークの意図された使い方に反することを意味します。
しかし、私はこれが次のリリースで変更されることに気付きました。 IUserStoreインターフェースはなります:
Task<IdentityResult> CreateAsync(TUser user, CancellationToken cancellationToken);
とのUserManager実装:
public virtual async Task<IdentityResult> CreateAsync(TUser user)
{
ThrowIfDisposed();
await UpdateSecurityStampInternal(user);
var result = await ValidateUserInternal(user);
if (!result.Succeeded)
{
return result;
}
if (Options.Lockout.AllowedForNewUsers && SupportsUserLockout)
{
await GetUserLockoutStore().SetLockoutEnabledAsync(user, true, CancellationToken);
}
await UpdateNormalizedUserNameAsync(user);
await UpdateNormalizedEmailAsync(user);
return await Store.CreateAsync(user, CancellationToken);
}
だからUSERSTOREで作成ロジックは、その時点で可能になります置きます。これはクライアントが完全性の懸念を処理する必要がないので、私の意見ではより良い設計となるでしょう。
は、その例外的なケースであるか、実行の通常の流れの一部ですか? –
@YuvalItzchakovありがとうございました!それは通常の実行フローの一部です。私は基本的に、彼らは常にtrueを返しビジネスロジック – reddy