إعادة توجيه المستخدم إلى صفحة مصادقة التي تستخدم مصادقة النماذج، وذلك باستخدام HTTP الموقع رأس، HttpWebRequest / الاستجابة وResponse.Cookies.Add ()

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

سؤال

وأحتاج إلى autheticate على المصادقة موقع باستخدام نماذج ثم إعادة توجيه المستخدم إلى أن الموقع جنبا إلى جنب مع كوكي الدورة. أنا لم ترد على كيفية القيام بنجاح هذا. وهنا رمز بلادي حتى الآن .. ما زلت على اعادة توجيهها إلى أن تطبيقات صفحة تسجيل الدخول. أي مساعدة هي محل تقدير كبير!


protected void Button1_Click(object sender, EventArgs e)
{
 string data = "nickname=&login={0}&password={1}&action_login.x=70&action_login.y=14action_login=Login";
 string postdata = String.Format(data, "test", "test");
 string page = @"http://1.1.1.1/home.asp";
 string loginPage = @"http://1.1.1.1/auth.asp";
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginPage);
 request.Method = "POST";
 request.ContentType = "application/x-www-form-urlencoded";
 request.AllowAutoRedirect = false;
 ASCIIEncoding encoding = new ASCIIEncoding(); //encoder
 byte[] requestData = encoding.GetBytes(postdata); //encode post data
 request.ContentLength = requestData.Length;
 //write the post data to the request
 Stream requestStream = request.GetRequestStream();
 // Send the data.
 requestStream.Write(requestData, 0, requestData.Length);
 requestStream.Close();
 try
 {
  HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  string cookieHeader = response.GetResponseHeader("Set-Cookie");
  string cookieValue = cookieHeader.Replace("pp_session_id=", "");
  HttpCookie cookie = new HttpCookie("pp_session_id",cookieValue);
  cookie.Domain = "1.1.1.1";
  cookie.Path = "/";
  Response.Clear();
  Response.StatusCode = 302;
  //Response.AddHeader("Set-Cookie", cookieHeader);
  Response.AddHeader("Location",page);
  Response.RedirectLocation = page;
  Response.Cookies.Add(cookie);
  Response.Flush();

 }
 catch (WebException ex)
 {
  Response.Write(ex.Message);
 }
}
هل كانت مفيدة؟

المحلول

استخدم الحرائق على موزيلا فايرفوكس لرؤية ما يفعله بالضبط المتصفح عند تسجيل الدخول إلى تطبيق الويب. ثم محاكاة نفس تسلسل خلال التعليمات البرمجية.

وأو يمكنك استخدام Wireshark للتعرف على طلبات أرسلت من قبل المتصفح.

وشيء واحد أستطيع أن أرى من التعليمات البرمجية، هو أن تقوم بإضافة ملفات تعريف الارتباط بشكل صريح. يجب أن لا يتم القيام بذلك. يجب وضع CookieContainer على الطلب، بحيث الكوكيز تحصل على إرسالها مع جميع الطلبات إلى هذا الموقع.

وأمل أن يساعد.

نصائح أخرى

واعتقد ما عليك القيام به طلبا إلى صفحة مصادقة على تطبيق ويب بعيد.

وسيكون لديك للاستيلاء على الكعكة، فهو يوفر لك حتى يكون لديك جلسة صالحة. يتم تمرير جلسة ASPNET معرف في ملف تعريف الارتباط. فإنك سوف تحتاج إلى تمرير اسم المستخدم وكلمة المرور المطلوبة لهذا التطبيق مع ملفات تعريف الارتباط التي تلقيتها لذلك سوف يكون جلسة مصادقة صالحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top