Wenn Sie Ihren eigenen IUserStore implementieren, sind die "optionalen" Schnittstellen der Klasse tatsächlich optional?

8

Ich arbeite mit Asp.Net Identity Framework Version 2 von Microsoft und implementiere meinen eigenen IUserStore. Meine neue Klasse MyUserStore implementiert die IUserStore<MyUserClass,int> -Schnittstelle und die IUserPasswordStore<MyUserClass,int> , was erforderlich ist, um sie mit der Klasse UserManager<MyUserClass,int> zu verwenden. Oder zumindest habe ich das aus Tutorials wie this :

  

"Die einzige erforderliche Schnittstelle im Identitätssystem ist IUserStore" - Scott Allen

Aber das scheint nicht der Fall zu sein, wenn ich den Code ausführe.

Ich initialisiere meinen Manager:

%Vor%

Und wenn sMan.PasswordSignIn (...) auf dem SignInManager ausgeführt wird, führt der SignInManager immer eine Funktionalität im UserManager aus, die von den optionalen Schnittstellen abhängt. Hier ist die Quelle für die PasswordSignInAsync-Methode aus der SignInManager-Klasse:

%Vor%

Es ruft immer UserManager.IsLockedOutAsync () auf, bevor es versucht, das Kennwort zu überprüfen. Wenn also der Speicher die Schnittstelle IUserLockoutStore nicht implementiert, wird jedes Mal eine Ausnahme ausgelöst, egal was passiert.

Bedeutet dies, dass Sie, um die Standardfunktionen der UserManager- und SignInManager-Klassen zu verwenden, jede I * Store-Schnittstelle implementieren müssen?

Es sieht so aus, als würde die Problemumgehung von SignInManager erben und die PasswordSignInAsync-Methode überschreiben. Ist das die übliche Praxis?

Danke!

    
Rafe 06.09.2014, 19:07
quelle

1 Antwort

6

Was ich festgestellt habe, dass das Identitätsframework nicht mit der "Optionalität" des erforderlichen I * Store übereinstimmt. In einigen öffentlichen Methoden wird überprüft, ob der erforderliche Store bereitgestellt wird, an anderen Stellen wird nur die Methode aufgerufen. Ich habe nicht herausgefunden, welche absolut erforderlich sind und welche nicht aufgerufen werden können. Also würde ich mit der Ausnahmeroutine gehen und implementieren, was auch immer die Geschäfte für Ihre Anwendung benötigt werden.

    
trailmax 08.09.2014 14:01
quelle