Как перейти на другой сайт, передать информацию для входа и заполнить форму входа в C # ASP.Net MVC - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать своего рода функцию автоматического входа во внутреннем инструменте ASP.Net MVC C #, которая позволит пользователям поддержки быстро войти в различные системы, которые они поддерживают.

Мне удалось передать все значения, необходимые для заполнения формы входа в систему через Ajax / jQuery, на мой контроллер, а затем в мой класс.Как видно ниже, я могу открывать различные URL-адреса на основе if if, но не заполнять форму входа.

Я изучал httpwebrequests, но не уверен, как мне структурировать, чтобы использовать значения переменных (ниже), чтобы заполнить различные поля формы входа в систему, а затем нажать кнопку.

public AutoLogin(string Environment, string Username, string OrgId, string UserId, string OrgKey)
    {
        var env = Environment;
        var user = Username;
        var org = OrgId;
        var userid = UserId;
        var orgKey = OrgKey;

        if (env == "system1")
        {
            string url = website;

            CookieContainer cookieJar = new CookieContainer();

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)";
            req.Method = "POST";
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            req.KeepAlive = true;
            req.Headers.Add("Keep-Alive: 300");
            req.AllowAutoRedirect = false;
            req.ContentType = "application/x-www-form-urlencoded";

            req.CookieContainer = cookieJar;

            string username = user;
            string pw = "password";
            string orgUid = orgKey;

            StreamWriter sw = new StreamWriter(req.GetRequestStream());
            sw.Write("userEmail=" + username + "&userPass=" + pw + "&orgUid=" + orgUid);
            sw.Close();

            HttpWebResponse response = (HttpWebResponse)req.GetResponse();

            //Add cookies to CookieJar (Cookie Container)
            foreach (Cookie cookie in response.Cookies)
            {
                cookieJar.Add(new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));
            }

            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1255));
            string tmp = reader.ReadToEnd();

            response.Close();
        }
        else if (env == "system2")
        {
            System.Diagnostics.Process.Start(url2);
        }
        else if (env == "system3")
        {
            System.Diagnostics.Process.Start(url3);
        }
        else
        {

        } 
    }

Обновление:

Добавлен код httpwebrequet, над которым я работал, но при нажатии на интерфейс кнопки он не перемещается / не открывает веб-страницу..

1 Ответ

0 голосов
/ 23 января 2019

Для внутренних сайтов самый простой способ - использовать проверку подлинности Windows на своих веб-сайтах.Просто разблокируйте свой компьютер с помощью пароля, а затем перейдите на свои внутренние веб-сайты без входа в систему.Windows может выполнить аутентификацию «под капотом».Web.config:

<authentication mode="Windows" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...