Konfigurieren von ASP.NET Identity ApplicationUserManager mit StructureMap

8

Ich benutze die asp.net-Identität in meinem Projekt und verwende structurmap als DI-Framework. Das Problem ist, wenn ich Constructor-Injection dann ApplicationUserManager nicht alle Mitglieder konfiguriert, z. B. TokenProvider, ...

Dies ist meine ApplicationUserManager-Klasse:

%Vor%

Dies ist die Startup.Auth-Klasse:

%Vor%

und sein mein AccountController:

%Vor%

meine Frage ist, wie kann ich meine ApplicationUserManager mit Strukturkarte konfigurieren? Wenn ich es als den folgenden Code einstelle, funktioniert es, aber ich weiß nicht, ob es eine gute Lösung ist oder nicht:

%Vor%

Bitte geben Sie mir an, ob es eine bessere Lösung gibt und ob es in Ordnung ist, was ist die beste Lebensdauer dafür? HttpContextScope, Singleton, ...?

    
Mohammad Zare 17.09.2014, 19:06
quelle

1 Antwort

5

Bevor Sie die StructureMap-Konfiguration dafür erstellen, ist es hilfreich zu wissen, wie Sie sie manuell erstellen würden, d. h. wenn Sie tatsächlich alles selbst neu erstellen.

UserManager ist von IUserStore abhängig und seine EntityFramework-Implementierung (UserStore) ist von DbContext abhängig. Alles manuell zu machen würde so aussehen:

%Vor%

(Ersetzen Sie IdentityUser durch Ihren benutzerdefinierten Benutzer, wenn Sie einen verwenden)

Sie können UserManager dann wie folgt konfigurieren:

%Vor%

Der komplizierteste Teil bei der Konfiguration von userManager bezieht sich auf den UserTokenProvider (der die Datenschutz-API verwendet), wenn Sie es manuell tun würden, würde so aussehen :

%Vor%

Hier ist ein Beispiel für eine StructureMap-Registrierung (Sie können aus diesem Beispiel extrapolieren und es an Ihre eigenen Bedürfnisse anpassen):

%Vor%

Ich schrieb einen Blog hierüber , es erklärt den Prozess, der zu dieser Konfiguration führt, es gibt auch einen Link zu einem Beispiel auf github eines MVC-Projekts , wo diese Konfiguration verwendet wird , können Sie Benutzer erstellen, auflisten und löschen.

    
Rui 09.03.2016 15:40
quelle