Какой код в 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
Вы должны быть в состоянии получить исходный код для менеджера пользователей, используя источник символов.