Używam MVC5 Identity 2.0, aby użytkownicy logowali się do mojej witryny internetowej, gdzie szczegóły uwierzytelniania są przechowywane w bazie danych SQL. Tożsamość Asp.net została zaimplementowana w standardowy sposób, co można znaleźć w wielu samouczkach online.
Klasa ApplicationUser w IdentityModels została rozszerzona o niektóre właściwości niestandardowe, takie jak liczba całkowita OrganizationId. Chodzi o to, że wielu użytkowników można utworzyć i przypisać do wspólnej organizacji na potrzeby relacji z bazą danych.
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; }
}
Jak mogę pobrać właściwość OrganizationId aktualnie zalogowanego użytkownika z poziomu kontrolera? Czy jest to dostępne za pomocą metody, gdy użytkownik jest zalogowany, czy też zawsze pobieram identyfikator organizacji z bazy danych na podstawie identyfikatora użytkownika za każdym razem, gdy jest wykonywana metoda kontrolera?
Czytając w Internecie, zauważyłem, że muszę użyć następujących elementów, aby uzyskać zalogowany identyfikator użytkownika itp.
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
Jednak OrganizationId nie jest właściwością dostępną w User.Identity. Czy muszę rozszerzyć User.Identity, aby uwzględnić właściwość OrganizationId? Jeśli tak, jak mam się do tego zabrać.
Powodem, dla którego potrzebuję identyfikatora OrganizationId tak często, jest to, że wiele zapytań do tabel jest zależnych od identyfikatora OrganizationId w celu pobrania danych odpowiednich dla organizacji, która jest skojarzona z zalogowanym użytkownikiem.