können Sie helfen mir bei meinem Problem:Anmeldung Modell für ASP.NET
i ASP.NET-Website, die einige grundlegende Autorisierungsfunktionen haben (Login/Logoout e.t.c.). Derzeit habe ich 3 Hauptmethoden:
- Bool Login (String-Name, String-Passwort);
- bool IsLogged();
- Zeichenfolge GetUserID();
Alle diese Methoden sind "hardcoded" in einer Klasse. Login-Methoden überprüfen die Datenbank, um festzustellen, ob der Benutzer existiert. Aber dann habe ich beschlossen, XML-Dateien zum Speichern von Benutzern zu verwenden. Das bedeutet, dass die gesamte Logik, die einen Benutzer überprüft hat, neu geschrieben werden sollte.
Ich habe eine Idee, die folgende „Muster“ zu verwenden:
- erstellen Schnittstelle (zB ILoginProvider), die diese drei Methoden erklärt, die in jeder Klasse Implementieren Sie diese Schnittstelle über
- beschrieben und schreiben spezifische Logik in der Login() - Methode, um XML-Datei oder Datenbank zu überprüfen
- Übergeben Sie diese Klasse an ??? (Hier ist mein Problem)
Ich dachte, eine Klasse zu machen (zB Loginhelper), die ILoginProvider Schnittstelle als Argument nehmen:
class LoginHelper {
private static ILoginProvider provider;
// this method should be called somewhere in Application_Startup event in Global.asax
public static void RegisterLoginProvider(ILoginProvider inst) {
provider = inst;
}
}
und dann notwendige Methoden schreiben:
public static bool IsLogged() {
return provider.IsLogged();
}
und rufen Sie dann die Methode RegisterLoginProvider() in Global.asax im Ereignis Application_Startup auf:
Ist es eine korrekte Art, eine solche Logik zu implementieren, um einige "Anbieter" mit anderen zu ändern?
Normalerweise würden Sie das Provider-basierte Konfigurationsmodell verwenden, um Ihre Provider im Web zu definieren.config plus Auswahl welcher der Standard ist. Auf diese Weise werden SiteMapProvider, MemberShipProvider, RoleProviders usw. implementiert und es wird empfohlen, Defactor-Standards zu befolgen http://msdn.microsoft.com/en-us/library/system.configuration.provider.providerbase.aspx –
Es ist eine gute Vorgehensweise Standards zu folgen, aber nicht notwendig, und außerdem, welche Implementierung zu gehen ist, liegt außerhalb des Bereichs dieser Frage. – CRice