Под управлением сервера входа в систему ASP.NET использует реализацию MembershipProvider и проверку подлинности с помощью форм для пользователя с членством ASP.NET. Вы можете повторить эти шаги, не используя элемент управления сервером входа, вручную проверяя учетные данные и затем прикрепляя файл cookie FormsAuthentication
к Response
.
.
Вот некоторые ресурсы, которые должны помочь вам начать:
Вам также, вероятно, будет полезно узнать об источнике элемента управления Login
, чтобы вы могли понять точную последовательность событий, которые происходят, когда пользователь входит в систему с помощью серверного элемента управления. Это должно помочь вам понять, как копировать эту функциональность для вашего конкретного случая использования.
В качестве примечания я бы рекомендовал использовать пользовательскую реализацию IHttpHandler
в качестве точки внедрения для обработки запроса на вход в систему, но есть много способов выполнить эту задачу .
Обновление, я чувствую себя щедрым, поэтому
Ниже приведен пример обработчика, который можно использовать для входа пользователя с помощью ASP.NET Membership и FormsAuthentication (так же, как серверный элемент управления).
Этот код предполагает:
- Существует сопоставление, настроенное с помощью Routing или web.config, которое будет вызывать этот обработчик.
Запрашивающая страница имеет форму, которая указывает на URL / маршрут, который отображается в web.config или с маршрутизацией, и что форма на этой странице содержит поле ввода username
с именем username
и password
поле ввода с именем password
.
public class LoginHandler : IHttpHandler
{
void IHttpHandler.ProcessRequest(HttpContext context)
{
string username = context.Request["username"];
string password = context.Request["password"];
if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password) && Membership.Provider.ValidateUser(username, password))
{
FormsAuthentication.SetAuthCookie(username, true);
RenderUserLoggedInResponse(context.Response,username);
}
else FormsAuthentication.RedirectToLoginPage("loginfailure=1");
}
private static void RenderUserLoggedInResponse(HttpResponse response, string username)
{
response.Write(string.Format("You have logged in successfully, {0}!", username));
response.End();
}
bool IHttpHandler.IsReusable { get { return true; } }
}