@User.Identity.Name по сути выдает логин. А как получить тот же Age к примеру?
public class User : IdentityUser
{
public int Age{ get; set; }
public string FIO { get; set; }
public string Addresses { get; set; }
}
Ответ
По умолчанию используются только Name.
Класс SignInManager регистрирует пользователей в вашем приложении. Этот класс использует IUserClaimsPrincipalFactory
public class AppClaimsPrincipalFactory : UserClaimsPrincipalFactory
public async override Task
if (user.Age > 0)
{
((ClaimsIdentity)principal.Identity).AddClaims(new[] {
new Claim("age", user.Age.ToString())
});
}
return principal;
}
}
Далее регистрируем в классе Startup в методе ConfigureServices после добавления Identity.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext
services.AddIdentity
services.AddScoped
...
}
В представлении значение Age можно получить так:
@User.Claims.Where(c => c.Type == "age").Select(c => c.Value).SingleOrDefault();
Для удобства можно создать метод расширения:
public static class IdentityExtensions
{
public static string GetAge(this IIdentity identity)
{
var claim = ((ClaimsIdentity)identity).FindFirst("age");
return (claim != null) ? claim.Value : string.Empty;
}
}
И использовать в представлении так:
@User.Identity.GetAge();
Комментариев нет:
Отправить комментарий