2016-10-26 4 views
0

Мой текущий код в следующем.Как получить и установить пользовательскую информацию в mvc 5 Identity?

public class ApplicationUser : IdentityUser 
{ 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     return userIdentity; 
    } 

} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

Я хочу, чтобы добавить сумму более свойств в классе ApplicationUser так, что эти поля, доступные на представлениях, как

@User.Identity.FullName 

Моя Войти действие размещенные на here

+0

Вы не можете продлить этот класс, но вы можете получить экземпляр 'ApplicationUser' (где вы можете добавить свои собственные свойства). Для простой аутентификации это примерно так: 'UserManager.FindById (User.Identity.GetUserId());' –

+1

возможно [это] (http://stackoverflow.com/questions/38846816/how-to-get-custom-property- значение-of-the-applicationuser-in-the-asp-net-mvc-5-vie/38847016 # 38847016) поможет – tmg

+0

@AdrianoRepetti, пожалуйста, проверьте http://stackoverflow.com/questions/28335353/how-to-extend -доступные-свойства-пользователя-идентификатора – Bharat

ответ

1

Чтобы быть в состоянии получить его путь:

1 - Вам необходимо создать Претензию к этому пользователю

HttpContext.Current.GetOwinContext().GetUserManager<UserManager>().AddClaimsAsync(UserId, new Claim("FullName", "The value for the full name")); 

2 - После того, как вы добавите претензию для пользователя, вы можете использовать это. Я сделал этот класс расширения, чтобы я мог получить значение заявки в представлении.

public static class IdentityExtensions 
{ 
    public static string FullName(this IIdentity identity) 
    { 
     return ((ClaimsIdentity)identity).FindFirst("FullName")?.Value; 
    } 
} 

При этом вы можете назвать это как @User.Identity.FullName()

+0

Я пробовал этот, но у меня есть ошибка. Нулевая опорная ошибка. – vicky

+0

Какой объект имеет значение null при его попытке? –

Смежные вопросы