В 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,

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

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

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

Обновление, я чувствую себя щедрым, так

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

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

  1. Существует сопоставление, настроенное с помощью Routing или 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; } }
        }
    
Другие вопросы по тегам