Saya menggunakan MVC5 Identity 2.0 agar pengguna dapat masuk ke situs web saya, tempat rincian otentikasi disimpan dalam database SQL. Asp.net Identity telah diimplementasikan dengan cara standar seperti yang dapat ditemukan di banyak tutorial online.
Kelas ApplicationUser di IdentityModels telah diperluas untuk menyertakan beberapa properti kustom, seperti integer OrganizationId. Idenya adalah bahwa banyak pengguna dapat dibuat dan ditugaskan ke Organisasi umum untuk tujuan hubungan basis data.
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; }
}
Bagaimana saya bisa mengambil properti OrganizationId dari pengguna yang saat ini masuk dari dalam pengontrol? Apakah ini tersedia melalui metode setelah pengguna login atau apakah saya selalu memiliki mengambil OrganizationId dari database, berdasarkan UserId, setiap kali metode controller dijalankan?
Membaca di web saya telah melihat saya perlu menggunakan yang berikut untuk mendapatkan UserId login dll
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
Namun, OrganizationId bukan properti yang tersedia di User.Identity. Apakah saya perlu memperluas User.Identity untuk memasukkan properti OrganizationId? Jika demikian, bagaimana caranya?
Alasan saya sangat membutuhkan OrganizationId adalah karena banyak permintaan tabel bergantung pada OrganizationId untuk mengambil data yang relevan dengan Organisasi yang terkait dengan pengguna yang masuk.