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

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

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

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

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

ура!

1 Ответ

2 голосов
/ 17 января 2012

Под управлением сервера входа в систему ASP.NET использует реализацию MembershipProvider и проверку подлинности с помощью форм для пользователя с членством ASP.NET. Вы можете повторить эти шаги, не используя элемент управления сервером входа, вручную проверяя учетные данные и затем прикрепляя файл cookie 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; } }
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...