Аутентификация пользователя ASP.NET MVC из приложения WPF

Как я могу аутентифицировать пользователя (с помощью имени пользователя и пароля) приложения ASP.NET MVC? Я пытаюсь сделать это с помощьюWebClient, проходяNetworkCredentials, отправив запрос в приложение ASP.NET MVC из моего клиента WPF. Как мне обработать этот запрос на сервере? Как я могу получить переданные имя пользователя и пароль?

Я использую проверку подлинности с помощью форм в приложении ASP.NET MVC (по умолчанию, которое создается с новым проектом).

Ответы на вопрос(2)

Решение Вопроса

Проверка подлинности с помощью форм выполняется в два этапа:

Пользователь заходит на страницу входа, вводит свое имя пользователя и пароль и отправляет их на сервер.Сервер проверяет их, и если они верны, он отправляет куки-файл аутентификации, который отправляется клиенту. Клиент сохраняет этот файл cookie и отправляет его вместе с каждым последующим запросом на сервер.

Таким образом, для достижения этого в приложении WPF вам необходимо сначала получить файл cookie для аутентификации. Поэтому сначала отправьте запрос POST на страницу входа в систему вместе с именем пользователя и паролем и прочитайте возвращенный файл cookie (для этого необходимо установить свойство CookieContainer в запросе HttpWebRequest, чтобы он мог перехватить файл cookie). Получив cookie, вы повторно используете контейнер cookie в последующих вызовах к аутентифицированным страницам.

Вы можете оформить заказэтот пример кода чтобы помочь вам (просто замените адреса и имена параметров).

 Henrique de Sousa11 февр. 2015 г., 01:59
В примере кода по предоставленной вами ссылке я получаю ошибку 500 с сервера.
 Igal Tabachnik23 сент. 2010 г., 13:06
Отлично, как раз то, что мне нужно! Большое спасибо!

Этот код работал для меня, используя подход Дарина и класс WebClientEx по их ссылке. Моя форма WPF должна пройти аутентификацию в приложении MVC и сохранить имя и значение возвращенного файла cookie для аутентификации в статических свойствах CookieName и CookieValue. Затем функция CreateUser () может получить доступ к защищенному действию в приложении MVC.

    //************************************************
    //************************************************
    private void Authenticate(object sender, RoutedEventArgs e)
    {
        using (var client = new WebClientEx())
        {
            var values = new NameValueCollection
            {
                { "UserName", "xxx" },
                { "Password", "yyy" },
            };

            var byteResponse = client.UploadValues("http://localhost/MyMvcApp/Account/Login", values);
            var responseString = Encoding.ASCII.GetString(byteResponse); //debugging

            CookieCollection authCookie = client.CookieContainer.GetCookies(new Uri("http://localhost/"));
            if (authCookie.Count > 0)
            {
                CookieName = authCookie[0].Name;
                CookieValue = authCookie[0].Value;
            }
        }
    }

    //************************************************
    //************************************************
    private void CreateUser(object sender, RoutedEventArgs e)
    {
        using (var client = new WebClientEx())
        {
            var user = new NameValueCollection
            {
                {"FirstName" , "Xavier"},
                {"LastName" , "McLann"},
                {"EmailAddress" , "[email protected]"},
                {"Phone" , "234445585"}
            };

            if (!String.IsNullOrEmpty(CookieName) && !String.IsNullOr,Empty(CookieValue))
                client.CookieContainer.Add(new Cookie(CookieName, CookieValue,"/","localhost"));

            var byteResponse = client.UploadValues("http://localhost/MyMvcApp/Home/Create", user);
            var responseString = Encoding.ASCII.GetString(byteResponse); //debugging
        }
    }

Ваш ответ на вопрос