Tôi đang sử dụng MVC5 Identity 2.0 để người dùng đăng nhập vào trang web của tôi, nơi các chi tiết xác thực được lưu trữ trong cơ sở dữ liệu SQL. Danh tính Asp.net đã được triển khai theo cách tiêu chuẩn như có thể tìm thấy trong nhiều hướng dẫn trực tuyến.
Lớp ApplicationUser trong IdentityModels đã được mở rộng để bao gồm một số thuộc tính tùy chỉnh, chẳng hạn như một tổ chức số nguyên. Ý tưởng là nhiều người dùng có thể được tạo và gán cho một Tổ chức chung cho các mục đích quan hệ cơ sở dữ liệu.
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; }
}
Làm cách nào tôi có thể truy xuất thuộc tính Organisd của người dùng hiện đang đăng nhập từ bên trong bộ điều khiển? Điều này có sẵn thông qua một phương thức một khi người dùng đã đăng nhập hay tôi luôn luôn lấy Tổ chức từ cơ sở dữ liệu, dựa trên UserId, mỗi khi phương thức bộ điều khiển thực thi?
Đọc trên web tôi đã thấy tôi cần sử dụng những điều sau đây để đăng nhập UserId, v.v.
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
Tuy nhiên, Organisd không phải là một tài sản có sẵn trong User.Identity. Tôi có cần gia hạn User.Identity để bao gồm thuộc tính Organisd không? Nếu vậy, làm thế nào để tôi đi về điều này.
Lý do tôi cần Tổ chức thường xuyên là vì nhiều truy vấn bảng phụ thuộc vào Tổ chức để truy xuất dữ liệu liên quan đến Tổ chức có liên quan đến người dùng đã đăng nhập.