Frage

Ich benutze ASP.NET Identität mit einer neuen Website und es scheint nicht viele zu geben (irgendwelche?) beispiele, wie dies entkoppelt durchgeführt werden kann.Ich möchte meine Domain-Modelle nicht DomainUser klasse, von der geerbt werden muss Microsoft.AspNet.Identity.EntityFramework.User, also habe ich eine Klasse erstellt, die so aussieht:

public class IdentityUser : User
{
    public virtual DomainUser DomainUser { get; private set; }
}

Ich habe das verschoben DbSets benötigt von ASP.NET Identität in die gleiche abgeleitete DbContext klasse als meine Domänenmodelle wie in dieser Antwort dargestellt.Ich habe das verlinkt IdentityUser unidirektional zum DomainUser über fließende API wie folgt:

modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();

Dies ermöglicht es mir, die Bedenken der Autorisierung und Authentifizierung größtenteils von den im DomainUser Klasse.Das ist besser, als sie zu einer Klasse zusammenzufassen, aber es fühlt sich immer noch hässlich an.Ich habe noch Hinweise auf die erforderlichen ASP.NET Identitätsassemblys in meinem Domänenprojekt.Ich könnte noch ein weiteres Projekt erstellen, das nur meine IdentityUser-Klasse und einen Verweis auf meine Domänenassembly enthält, um die Navigationseigenschaft zu ermöglichen, aber das fühlt sich kompliziert an.

Ich bin der Meinung, dass es eine bessere, sauberere und modularere Möglichkeit geben sollte, Identität mit der Domäne zu verknüpfen, ohne dass dies zu einer engen Kopplung führt.

Hat sich jemand einen besseren Weg ausgedacht, damit umzugehen?Ich hoffe, die Aufmerksamkeit der Beteiligten auf sich zu ziehen ASP.NET Identitätsprojekt (Hao Kung et al), um hier eine Richtung vorzugeben.

War es hilfreich?

Lösung 2

Tatsache ist, dass, wenn Sie von IdentityUser erben werden, ASP.NET Identitätsbezogene Versammlungen kommen für die Fahrt mit.Sie können Identität nicht trennen von ASP.NET .Die ursprünglichen Beispiele in der Frage kaufen Ihnen nicht viel - in den meisten Fällen ist es wahrscheinlich besser, wenn Sie nur erben von IdentityUser wenn Sie verwenden werden IdentityUser in Ihrem Domain-Projekt.

Wenn Ihr Domain-Projekt wirklich frei von sein muss ASP.NET verwandte Assemblys Dann können Sie die identitätsbezogenen Klassen in Ihrem Webprojekt belassen und eine separate erstellen User modellieren Sie in Ihrem Domänenprojekt eine Verknüpfung der beiden programmgesteuert, wie vorgeschlagen hier.

Andere Tipps

Es gibt eine diskussion über Entkopplung ASP.NET Identität hier.Und Sie können Beispiele dafür finden, wie es in der umgesetzt wird open Source Projekt SimpleSecurity.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top