Najlepsze praktyki dotyczące integracji tożsamości ASP.NET - czy istnieją?
Używam Tożsamości ASP.NET z nową stroną internetową i wydaje się, że nie ma wielu (żadnych?) Przykładów, jak to zrobić w sposób oddzielony. Nie chcę mojego modelu domenyDomainUser
klasa do dziedziczeniaMicrosoft.AspNet.Identity.EntityFramework.User
, więc stworzyłem klasę, która wygląda tak:
public class IdentityUser : User
{
public virtual DomainUser DomainUser { get; private set; }
}
PrzeniosłemDbSet
s wymagane przez ASP.NET Identity do tej samej pochodnejDbContext
klasa jako moje modele domenjak pokazano w tej odpowiedzi. PołączyłemIdentityUser
jednokierunkowo doDomainUser
poprzez Fluent API, jak to:
modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();
To pozwala mi głównie oddzielić obawy dotyczące autoryzacji i uwierzytelnienia od zachowań zdefiniowanych wDomainUser
klasa. Jest to lepsze niż połączenie ich w jedną klasę, ale nadal jest brzydkie. Nadal mam odniesienia do wymaganych zestawów tożsamości ASP.NET w moim projekcie domeny. Mógłbym stworzyć kolejny projekt, który posiadałby tylko moją klasę IdentityUser i odwołanie do mojego zestawu Domeny, aby umożliwić właściwości nawigacyjne, ale to zaczyna być skomplikowane.
Czuję, że powinien istnieć lepszy, czystszy, bardziej modułowy sposób łączenia Tożsamości z domeną, bez powodowania ścisłego powiązania.
Czy ktoś wymyślił lepszy sposób radzenia sobie z tym? Mam nadzieję, że zwrócę uwagę osób zaangażowanych w projekt ASP.NET Identity (Hao Kung et al), aby wskazać kierunek.