Я пытаюсь создать веб-сайт в ASP.NET Core MVC и использую библиотеку Microsoft.Identity. У меня есть настраиваемое свойство в моем классе User
(ApplicationUser), которое называется Token
. Я хочу создать файл cookie при входе в систему с этим токеном. Поэтому мне нужно вызвать некоторую функцию, которая позволяет мне получить атрибут Token
от вошедшего в систему пользователя (через UserManager или что-то еще. Это должен быть пользователь, который вошел в систему.)
Я поискал в Интернете и нашел несколько решений, создав собственный Factory и затем добавив его в startup.cs Вот так. Но я не могу найти или увидеть способ доступа к собственности. User.Identity.GetToken()
не работает.
Вот моя кастомная фабрика:
public class CustomUserIdentityFactory : UserClaimsPrincipalFactory<User, IdentityRole>
{
public CustomUserIdentityFactory(UserManager<User> userManager, RoleManager<IdentityRole> roleManager, IOptions<IdentityOptions> optionsAccessor) : base(userManager, roleManager, optionsAccessor)
{}
public override async Task<ClaimsPrincipal> CreateAsync(User user) {
var principal = await base.CreateAsync(user);
if(!string.IsNullOrWhiteSpace(user.Token)) {
((ClaimsIdentity)principal.Identity).AddClaims(new[] {
new Claim(ClaimTypes.Hash, user.Token)
});
}
return principal;
}
}
Вот настройка в моем Startup.cs
services.AddScoped<IUserClaimsPrincipalFactory<User>, CustomUserIdentityFactory>();
Итак, короче: я пытаюсь получить доступ к настраиваемому свойству идентификации и нашел способ добавить его в UserManager, но не могу найти способ получить к нему доступ.
(await _userManager.GetUserAsync(HttpContext.User)).Token
- person Finley Siebert   schedule 11.07.2017