В ASP.NET;Как я могу войти с удаленной HTML-страницы на другую страницу ASPX с членством в ASP.NET
Вопрос
Мне в основном нужно войти в другой домен, который использует членство в asp.net.
Если у нас есть веб-приложение ASP.net, использующее членство в ASP.Net, с одной стороны, и HTML-страница из другого домена, с другой стороны.
Можно ли войти на веб-сайт ASP.NET через удаленную HTML-страницу.
Я делал это с Coldfusion раньше, но членство в ASP.NET использует серверный элемент управления.
Ура!
Решение
Под серверным элементом управления входа в систему ASP.NET использует реализацию MembershipProvider и проверку подлинности с помощью форм для пользователя с членством в ASP.NET. Вы можете воспроизвести эти шаги без использования серверного элемента управления входа, вручную проверив учетные данные и затем прикрепив файл cookie FormsAuthentication
к Response
.
Вот несколько ресурсов, которые помогут вам начать работу:
- Общие сведения о билете проверки подлинности с помощью форм и cookie - MSDN
- Объяснение: проверка подлинности с помощью форм в ASP.NET 2.0 - MSDN
- Изучение членства, ролей и профиля ASP.NET - 4guysfromrolla
Вам также, вероятно, будет полезно размышлять об источнике элемента управления Login
, чтобы вы могли понять точную последовательность событий, которые происходят, когда пользователь входит в систему с помощью серверного элемента управления. Это должно облегчить вам понимание того, как воспроизвести эту функциональность для вашего конкретного варианта использования.
В качестве примечания я бы рекомендовал использовать пользовательскую реализацию IHttpHandler
в качестве точки внедрения для обработки запроса входа в систему, но есть много способов выполнить эту задачу .
Обновите, я чувствую себя щедрым, поэтому
Ниже приведен пример обработчика, который можно использовать для входа пользователя в систему с помощью ASP.NET Membership и FormsAuthentication (точно так же, как серверный элемент управления).
Этот код предполагает:
- Существует сопоставление, настроенное с помощью маршрутизации или 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; } } }