Можете ли вы помочь мне с моей проблемой:
У меня есть веб-сайт ASP.NET, который имеет некоторые основные функции авторизации (Вход / Выход из системы и т.д.).В настоящее время у меня есть 3 основных метода:
- bool Login (имя строки, пароль строки);
- bool IsLogged ();
- string GetUserID ();
Все эти методы «жестко закодированы» в один класс.Методы входа проверяют базу данных, чтобы определить, что пользователь существует.Но затем я решил использовать XML-файл для хранения пользователей, это означает, что вся логика, проверяющая пользователя, должна быть переписана.
У меня есть идея использовать следующий «шаблон»:
- Создать интерфейс (например, ILoginProvider), который объявляет те 3 метода, которые описаны выше
- Реализацияэтот интерфейс в любом классе и написать специальную логику в методе Login () для проверки XML-файла или базы данных
- Передать этот класс ???(вот моя проблема)
Я подумал создать класс (например, LoginHelper), который может принимать интерфейс ILoginProvider в качестве аргумента:
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;
}
}
, а затем написать необходимые методы:
public static bool IsLogged() {
return provider.IsLogged();
}
, а затем вызовите метод RegisterLoginProvider () в Global.asax в событии Application_Startup:
MyCustomProvider prov = new MyCustomProvider(); // this class implements ILoginProvider interface
LoginHelper.RegisterSecurityProvider(prov);
Правильный ли способ реализации такой логики для замены одних «провайдеров» другими?