ユーザーが私のWebサイトにログインするためにMVC5 Identity 2.0を使用しています。認証の詳細はSQLデータベースに保存されています。Asp.net Identityは、多くのオンラインチュートリアルで見られるように、標準的な方法で実装されています。
IdentityModelsのApplicationUserクラスが拡張され、整数のOrganizationIdなどのカスタムプロパティが含まれるようになりました。多くのユーザーを作成して、データベース関係の目的で共通の組織に割り当てることができます。
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;
        }
        //Extended Properties
        public DateTime? BirthDate { get; set; }
        public long? OrganizationId { get; set; }
        //Key Mappings
        [ForeignKey("OrganizationId")]
        public virtual Organization Organization { get; set; }
    }現在ログインしているユーザーのOrganizationIdプロパティをコントローラー内から取得するにはどうすればよいですか?これは、ユーザーがログインするとメソッドを介して利用できますか、それとも、コントローラーメソッドが実行されるたびに、UserIdに基づいてデータベースから常にOrganizationIdを取得しますか?
私が見たウェブで周りを読んで、ログインしたUserIdなどを取得するために以下を使用する必要があります。
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();ただし、OrganizationIdはUser.Identityで使用できるプロパティではありません。User.Identityを拡張して、OrganizationIdプロパティを含める必要がありますか?もしそうなら、私はこれについてどうやって行くのですか?
私がOrganizationIdを頻繁に必要とする理由は、多くのテーブルクエリが、ログインしたユーザーに関連付けられている組織に関連するデータを取得するためにOrganizationIdに依存しているためです。