Существует класс пользователя с полем «Аватар», в котором хранится путь к его профилю. Я хочу показать его в заголовке внутри частичного представления. Поэтому я решил добавить заявку на идентификацию пользователя. Я ставлю эти строки кода внутри моего IdentityConfig.cs
класса:Правильное место для добавления пользовательских заявок
public override Task<ClaimsIdentity> CreateUserIdentityAsync(AppUser user)
{
if(!System.String.IsNullOrEmpty(user.Avatar))
user.Claims.Add(new AppUserClaim() { ClaimType = "avatar", ClaimValue = user.Avatar});
return user.GenerateUserIdentityAsync((AppUserManager)UserManager);
}
Но есть проблема: после определенного периода времени (. Приблиз 1 час) это претензии исчезает, и нет аватара показано на рисунке. Я узнал, что asp.net identity framework восстанавливает идентификатор пользователя каждые 30 минут (по умолчанию). И в соответствии с этим:
regenerateIdentityCallback: (manager, user) =>
user.GenerateUserIdentityAsync(manager)
он вызывает GenerateUserIdentityAsync
метод класса пользователя. В этот момент мне становится непонятно. Есть два, на первый взгляд, подобные методы генерации идентификации пользователя:
- Внутри AppUser класс, который принимает
usermanager
класса в качестве параметра -public async Task<ClaimsIdentity> GenerateUserIdentityAsync(AppUserManager manager)
- Внутри SignInManager -
public override Task<ClaimsIdentity> CreateUserIdentityAsync(AppUser user)
Какова цель этого? Где каждый из этих методов был использован? И какой из них следует использовать для добавления пользовательских требований?