ฉันใช้ MVC5 Identity 2.0 เพื่อให้ผู้ใช้ล็อกอินเข้าสู่เว็บไซต์ของฉันซึ่งรายละเอียดการตรวจสอบความถูกต้องจะถูกเก็บไว้ในฐานข้อมูล SQL Asp.net Identity ได้รับการปรับใช้ในรูปแบบมาตรฐานตามที่พบได้ในแบบฝึกหัดออนไลน์มากมาย
คลาส ApplicationUser ใน IdentityModels ได้รับการขยายเพื่อรวมคุณสมบัติที่กำหนดเองบางอย่างเช่น 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 ของผู้ใช้ที่ล็อกอินในปัจจุบันจากภายในคอนโทรลเลอร์ได้อย่างไร สามารถใช้งานได้โดยใช้วิธีการเมื่อผู้ใช้เข้าสู่ระบบหรือฉันจะดึง OrganizationId จากฐานข้อมูลตาม UserId ทุกครั้งที่เมธอดคอนโทรลเลอร์ดำเนินการหรือไม่
อ่านรอบ ๆ บนเว็บฉันเห็นว่าฉันจำเป็นต้องใช้สิ่งต่อไปนี้เพื่อเข้าสู่ระบบ UserId เป็นต้น
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
อย่างไรก็ตาม OrganizationId ไม่ใช่คุณสมบัติที่มีอยู่ใน User.Identity ฉันจำเป็นต้องขยาย User.Identity เพื่อรวมคุณสมบัติ OrganizationId หรือไม่ ถ้าเป็นเช่นนั้นฉันจะไปเกี่ยวกับเรื่องนี้ได้อย่างไร
เหตุผลที่ฉันต้องการ OrganizationId บ่อยมากก็คือแบบสอบถามตารางจำนวนมากต้องพึ่งพา OrganizationId เพื่อดึงข้อมูลที่เกี่ยวข้องกับองค์กรที่เชื่อมโยงกับผู้ใช้ที่เข้าสู่ระบบ