Я использую MVC5 Identity 2.0 для входа на мой сайт, где данные аутентификации хранятся в базе данных SQL. Идентификация Asp.net была реализована стандартным способом, как это можно найти во многих онлайн-учебниках.
Класс 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? Если да, то как это сделать.
Причина, по которой мне нужна организацияId так часто, заключается в том, что многие запросы в таблице зависят от OrganizationId для извлечения данных, относящихся к Организации, связанных с зарегистрированным пользователем.