2016-10-26 7 views
0

私の現在のコードは以下の通りです。mvc 5のカスタムユーザー情報を取得して設定する方法

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(); 
    } 
} 

は、私は私のログインアクションがhere

+0

のようにそれを呼び出すことができます。単純な認証の場合、 'UserManager.FindById(User.Identity.GetUserId());' –

+1

[これ](http://stackoverflow.com/questions/38846816/how-to-get-custom-property- application-in-the-asp-net-mvc-5-vie/38847016#38847016)が役に立ちます – tmg

+0

@AdrianoRepetti http://stackoverflow.com/questions/28335353/how-to-extendをご確認ください利用可能なユーザー属性の属性 – Bharat

答えて

1

に配置されて

@User.Identity.FullName 

のような景色で利用可能なこれらのフィールドは、それを取得することができるようにするにようにApplicationUserクラスの合計より多くのプロパティを追加したいです方法:

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; 
    } 
} 

あなたはそのクラスを拡張することはできませんが、あなたは(あなたが独自のプロパティを追加することができます) `ApplicationUser`のインスタンスを取得することができます@User.Identity.FullName()

+0

これを試しましたが、エラーが発生しました。ヌル参照エラー。 – vicky

+0

試してみると、どのオブジェクトがヌルですか? –

関連する問題