Какой код в ASP.NET Identity устанавливает штамп безопасности пользователя?

Марка безопасности - это случайное значение, которое генерируется на основе имени пользователя и пароля пользователя.

После цепочки вызовов методов я проследил происхождение штампа безопасности до SecurityStamp собственность Microsoft.AspNet.Identity.EntityFramework.IdentityUser<TKey, TLogin, TRole, TClaim> учебный класс.

Тем не менее, я не могу найти код, который устанавливает это значение. Я нашел только один установщик этого свойства, и это слой EntityFramework, который обеспечивает основное хранилище (IUserStore<..>, IRoleStore<...>, так далее.).

// From Microsoft.AspNet.Identity.EntityFramework.UserStore<...>
public virtual Task SetSecurityStampAsync(TUser user, string stamp)
{
    this.ThrowIfDisposed();
    if (user == null)
    {
        throw new ArgumentNullException("user");
    }
    user.SecurityStamp = stamp;
    return Task.FromResult<int>(0);
}

Тем не менее, я не нашел код, который вызывает в SetSecurityStampAsync метод.

Это, очевидно, будет сброшено при каждом изменении учетных данных пользователя или при создании нового пользователя.

Какой код устанавливает это значение?

1 ответ

Microsoft.AspNet.Identity.Core дефолт UserManager часто использует этот метод.

Вызывает это используя внутренний метод UpdateSecurityStampInternal и публичный метод UpdateSecurityStampAsync,

Следующие методы вызывают внутренний метод:

  • CreateAsync
  • RemovePasswordAsync
  • UpdatePassword
  • RemoveLoginAsync
  • SetEmailAsync
  • SetPhoneNumberAsync
  • ChangePhoneNumberAsync
  • SetTwoFactorEnabledAsync

Вы должны быть в состоянии получить исходный код для менеджера пользователей, используя источник символов.

Другие вопросы по тегам