В ASP.NET;Как я могу войти с удаленной HTML-страницы на другую страницу ASPX с членством в ASP.NET

StackOverflow https://stackoverflow.com/questions/8891386

Вопрос

Мне в основном нужно войти в другой домен, который использует членство в asp.net.

Если у нас есть веб-приложение ASP.net, использующее членство в ASP.Net, с одной стороны, и HTML-страница из другого домена, с другой стороны.

Можно ли войти на веб-сайт ASP.NET через удаленную HTML-страницу.

Я делал это с Coldfusion раньше, но членство в ASP.NET использует серверный элемент управления.

Ура!

Это было полезно?

Решение

Под серверным элементом управления входа в систему ASP.NET использует реализацию MembershipProvider и проверку подлинности с помощью форм для пользователя с членством в ASP.NET. Вы можете воспроизвести эти шаги без использования серверного элемента управления входа, вручную проверив учетные данные и затем прикрепив файл cookie FormsAuthentication к Response.

Вот несколько ресурсов, которые помогут вам начать работу:

Вам также, вероятно, будет полезно размышлять об источнике элемента управления Login, чтобы вы могли понять точную последовательность событий, которые происходят, когда пользователь входит в систему с помощью серверного элемента управления. Это должно облегчить вам понимание того, как воспроизвести эту функциональность для вашего конкретного варианта использования.

В качестве примечания я бы рекомендовал использовать пользовательскую реализацию IHttpHandler в качестве точки внедрения для обработки запроса входа в систему, но есть много способов выполнить эту задачу .

Обновите, я чувствую себя щедрым, поэтому

Ниже приведен пример обработчика, который можно использовать для входа пользователя в систему с помощью ASP.NET Membership и FormsAuthentication (точно так же, как серверный элемент управления).

Этот код предполагает:

  1. Существует сопоставление, настроенное с помощью маршрутизации или web.config, которое будет вызывать этот обработчик.
  2. Запрашивающая страница имеет форму, указывающую на 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; } }
        }
    
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top