Я використовую MVC5 Identity 2.0 для користувачів, щоб увійти на свій веб-сайт, де дані аутентифікації зберігаються в базі даних SQL. Ідентифікація Asp.net реалізована стандартним чином, як це можна знайти в багатьох навчальних посібниках в Інтернеті.
Клас ApplicationUser в IdentityModels був розширений, щоб включити деякі власні властивості, такі як ціла OrganiId. Ідея полягає в тому, що багато користувачів можуть бути створені та призначені до спільної Організації для цілей взаємозв'язку БД
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; }
}
Як я можу отримати властивість OrganId поточно зареєстрованого користувача у контролера? Чи це доступно через метод, коли користувач увійшов у систему чи я завжди маю отримати OrganiId з бази даних на основі UserId кожного разу, коли виконується метод контролера?
Читаючи в Інтернеті, я побачив, що для входу в UserId тощо потрібно використовувати наступне.
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
Однак OrganiId не є власністю, доступною в User.Identity. Чи потрібно мені розширити User.Identity, щоб включити властивість OrganId? Якщо так, то як мені це зробити.
Причина, з якою мені так часто потрібен OrganId, полягає в тому, що багато запитів таблиць покладаються на OrganiId для отримання даних, що стосуються Організації, пов'язаних із зареєстрованим користувачем.