Heim >Backend-Entwicklung >C++ >Wie kann die Abhängigkeitsinjektion von Unity die bedingte Authentifizierung basierend auf der Anbieterauswahl verarbeiten?
In diesem Artikel befassen wir uns mit dem Konzept der bedingten Abhängigkeitsauflösung in Unity und befassen uns mit der Implementierung der bedingten Authentifizierung basierend auf bereitgestelltes Codebeispiel.
Bedingt Auflösen
Durch die bedingte Auflösung können Sie Objekte basierend auf bestimmten Bedingungen konstruieren. In unserem Fall möchten wir, dass Unity basierend auf der Authentifizierungsmethode des Benutzers den geeigneten Authentifizierungsanbieter (Twitter oder Facebook) auswählt.
Schnittstellen
Um dies zu erreichen, definieren wir eine IAuthenticate-Schnittstelle mit einer ApplyTo-Methode, die nachverfolgt, welche Authentifizierungsmethode von einer bestimmten unterstützt wird Anbieter.
public interface IAuthenticate{ bool Login(string user, string pass); bool AppliesTo(string providerName); }
Anbieter authentifizieren
Für jeden Authentifizierungsanbieter (Twitter und Facebook) implementieren wir die IAuthenticate-Schnittstelle und überschreiben die Methode „AppliesTo“, um anzugeben, ob sie verarbeitet wird die angegebene Authentifizierung Methode.
public class TwitterAuth : IAuthenticate { ... bool AppliesTo(string providerName) { // Check if this class name matches the provider name } }
Strategie
Wir erstellen eine IAuthenticateStrategy-Schnittstelle, die als zentraler Punkt für die Durchführung der Authentifizierung dient. Diese Strategie beinhaltet eine Methode zur Auswahl des geeigneten Anbieters basierend auf dem Anbieternamen.
public interface IAuthenticateStrategy{ bool Login(string providerName, string user, string pass); }
Unity-Registrierung
In unserer Unity-Konfiguration registrieren wir die Authentifizierungsanbieter und die Strategieinstanz.
unityContainer.RegisterType<IAuthenticate, TwitterAuth>("twitterAuth"); unityContainer.RegisterType<IAuthenticate, FacebookAuth>("facebookAuth"); unityContainer.RegisterType<IAuthenticateStrategy, AuthenticateStrategy>( // Resolve authentication providers array new InjectionConstructor(new ResolvedArrayParameter<IAuthenticate>( new ResolvedParameter<IAuthenticate>("twitterAuth"), new ResolvedParameter<IAuthenticate>("facebookAuth") )) );
Verwendung
Der authentifizierte Controller ist Jetzt geändert, um die Strategieschnittstelle zu verwenden.
private readonly IAuthenticateStrategy _authenticateStrategy; public AuthenticateController(IAuthenticateStrategy authenticateStrategy) {...} public virtual ActionResult Twitter(string user, string pass) {...} public virtual ActionResult Facebook(string user, string pass) {...}
Wenn jetzt die Anmeldeaktion mit einem bestimmten Anbieternamen aufgerufen wird, wählt die Strategie den richtigen Authentifizierungsanbieter aus und führt die Anmeldung entsprechend durch.
Verbessertes Design
Das Strategiemuster trennt die Authentifizierungsverarbeitung von der Controller-Logik. Dies ermöglicht eine einfachere Wartung und Erweiterbarkeit durch einfaches Hinzufügen neuer Authentifizierungsanbieter, ohne den Controller-Code zu ändern.
Das obige ist der detaillierte Inhalt vonWie kann die Abhängigkeitsinjektion von Unity die bedingte Authentifizierung basierend auf der Anbieterauswahl verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!