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