Asp.Net.Identity CreateAsync вызывает снова CreateAsync в UserManager - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь понять, что происходит, и хочу отредактировать часть usermanager через мой собственный applicationusermanager. Перед вызовом UserStore CreateAsync (перед вставкой в ​​БД), который я должен использовать.Я не могу понять этот код здесь ..

 public virtual async Task<IdentityResult> CreateAsync(TUser user, string password)
{
  this.ThrowIfDisposed();
  IUserPasswordStore<TUser, TKey> passwordStore = this.GetPasswordStore();
  if ((object) user == null)
    throw new ArgumentNullException(nameof (user));
  if (password == null)
    throw new ArgumentNullException(nameof (password));
  IdentityResult identityResult = await this.UpdatePassword(passwordStore, user, password).WithCurrentCulture<IdentityResult>();
  if (!identityResult.Succeeded)
    return identityResult;
  return await this.CreateAsync(user).WithCurrentCulture<IdentityResult>();
}

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

Я пытаюсь так:

 public override async Task<IdentityResult> CreateAsync(FrUser user,string password)
    {
        IUserPasswordStore<FrUser> pws = Store as IUserPasswordStore<FrUser>;
        if ((object)user == null)
            return new IdentityResult(string.Format(SystemMessage.NewException,"CreateAsync User Null"));
        if (password == null)
            return new IdentityResult(string.Format(SystemMessage.NewException, "CreateAsync Password Null"));

        IdentityResult result = await this.UpdatePassword(pws, user, password);



        IdentityResult secondResult= await base.CreateAsync(user);

       //at last calling Store.CreateAsync(user); for db insert
        return bla bla;
    }
...