10

Ich arbeite in Visual Studio 2013 RC und teste die Formularauthentifizierung mit neuen Microsoft.AspNet.Identity.* Paketen.Entkopplung von Microsoft.AspNet.Identity. *

Ich würde diese Konzepte (Benutzer, Rollen, etc, usw.) integrieren, aber meine eigenen Domänenmodelle (POCOs) verwenden wollen, die in verschiedenen Assembly sind. Ich möchte auch keine Abhängigkeit von Microsoft.AspNet.Identity.* dlls erstellen.

Ist das überhaupt möglich? Ich fand this article, die besagt, dass es nicht ist, aber der Artikel basiert auf Preview nicht RC-Versionen von Identitätspaketen geschrieben.

Antwort

1

Ja, dies ist ein vollständig unterstütztes Szenario, im Grunde werden Sie mit der Microsoft.AspNet.Identity.EntityFramework-DLL, die die EF-Standardimplementierung verwendet, den Ausschluss verwenden möchten, aber Sie sollten in der Lage sein, die Manager-Klassen wiederzuverwenden und einfach zu implementieren Eigene Custom Stores mit eigenen POCOs, die der Manager über die Schnittstelle gut nutzen kann. Für RTM wurde es ein wenig gestrafft und vereinfacht, ich glaube, dass die RC-Version noch nicht so optimiert war.

Aktualisiert Sie hier frühen Zugriff auf die RTM-Bits erhalten können: MyGet

+0

Wird es ein Beispiel geben, wie dies (mit einem benutzerdefinierten Speicher) für RTM erreicht werden kann? Ich würde gerne in der Lage sein, die OWIN-Sicherheit zu nutzen und einfach "sagen", wo ich Benutzer, Profile, Rollen usw. mit meiner eigenen Domain finden kann. – zam6ak

+0

Ja, es wird einige Beispiele für RTM geben demonstrieren Sie dies, speichert Azure Table Storage, ein MySql-Shop, mit vorhandenen Datenbanken (die wahrscheinlich am ähnlichsten, was Ihr Szenario wäre) –

+0

Ich freue mich auf diese Beispiele (vor allem bestehende db/model) und Hoffnung Situation wird anders sein als die eine in @Olav Nybø beschrieben Antwort und Kommentare ... – zam6ak

4

ich meine Beispielprojekt aktualisiert haben, die Sie hier finden: Identity RC1 sample

Es ist nun ein Entity Framework-Modell implementiert, Es ist immer noch ein Verweis auf Microsoft.AspNet.Identity.EntityFramework erforderlich, da ich auch nicht alle Store-Klassen neu implementieren wollte. Das Beispiel zeigt jedoch, wie Sie Ihre eigenen POCO-Klassen für das Modell verwenden können.

Wenn Sie wollen das die Abhängigkeit von Microsoft.AspNet.Identity.EntityFramework von Ihrem Modell Montage entfernen müssen Sie eine Klasse der Umsetzung der IIdentityStore Schnittstelle, die Eigenschaften der folgenden Schnittstellen implementieren:

  • IUserLoginStore
  • IRoleStore
  • IUserSecretStore
  • ITokenStore
  • IUserClaimStore
  • IUserManagementStore
  • IUserStore

Die IIdentityStore Klasse in einer Baugruppe getrennt von Ihrem Modell Montag, mit einem Hinweis auf das Modell Montag sein soll. Die IIdentityStore-Assembly wäre abhängig von ASP.Net Identity Core.

Ihre benutzerdefinierte Implementierung von IIdentityStore der Lage wäre, müssen somwhow vom und zum POCO Klassen zu ASP.Net Identität Schnittstellen wie IUser, IUserSecret usw.

Scheint mir zu konvertieren eine Menge Arbeit zu sein, wenig Gewinn, wenn Sie EF ohnehin für Ihre Filialen nutzen.

Eine Abhängigkeit von der AspNet.Identity.Core Assembly zu nehmen und einige Ihrer POCO Klassen implementieren jeweils eine winzige Schnittstelle, scheint mir viel einfacher.

+0

Hmm, auch solche sind Teil des Kernpakets 'Microsoft.AspNet.Identity' - oder nicht? – zam6ak

+0

Sie haben Recht, ich habe meine Antwort aktualisiert. Meine POCOs in meinem Beispielprojekt implementieren auch IUser- und IUserSecret-Schnittstellen, die ebenfalls in der Microsoft.AspNet.Identity.Core-Assembly enthalten sind. –

+1

Die Übernahme dieser Abhängigkeit (um die Schnittstelle zu implementieren) vereinfacht die Dinge, aber ich glaube nicht, dass es für uns funktioniert. Wenn Sie über eine Domänen-DLL mit Ihren Modellen und eine Konsolenanwendung verfügen, die diese ebenfalls verwendet, ist es nicht sinnvoll, die ASP.NET-Abhängigkeit zu übertragen. Außerdem, wenn Sie erst einmal diesen Weg eingeschlagen haben (Abhängigkeiten vom Core-Domain-Modell aufnehmen) ... nach ein paar Jahren haben Sie am Ende einen Albtraum :) – zam6ak

1

Nur für den Fall. Vielleicht kann ich jemandem helfen. exorcising entity framework from asp.net.Identity

I separates Projekt (Klassenbibliothek) erstellt hatte, dann fügen Sie ref asp.identity.core, dann hatte ich dort meine Klasse Users umgesetzt, und es ist meine Identität config in Webprojekt füttern.

Es funktioniert gut im Projekt mit komplexer n-Tier-Architektur.

+0

Vielen Dank! Ein weiterer hilfreicher Artikel ist [Persistence-Ignorant ASP.NET Identität mit Mustern] (http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/) – nrodic

Verwandte Themen