2012-03-06 10 views
5

postanowiłem ponownie napisać pytanie, znalazłem pewne informacje na temat sposobu osiągnięcia powyższego: http://msdn.microsoft.com/en-us/library/aa289495%28v=vs.71%29.aspxJak sprawdzić, czy przeglądarka ma włączone pliki cookie w aplikacji internetowej?

Jednak moim problemem jest to, że staram się robić wszystko, co na razie Page_Load z Login.aspx.cs.

Początkowo wygląda na to, że działa poprawnie, dopóki nie spróbuję się zalogować, wprowadzając moje poświadczenia i klikając przycisk Zaloguj. Wtedy całe piekło pęka i mam niekończącą się pętlę. Ciągle wraca tam iz powrotem między Page_Loads na Login.aspx.cs i TestForCookies.aspx.cs. . Za każdym razem rośnie Przekierowanie URL innego "?AcceptCookies=1”Czy istnieje obejście tego

kod

Login.aspx.cs: Kod

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     if (Request.QueryString["AcceptsCookies"] == null) 
     { 
      Response.Cookies["TestCookie"].Value = "ok"; 
      Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1); 
      Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(Request.Url.ToString()))); 
     } 
     else 
     { 
      LoginBox.InstructionText = "Accept cookies = " + Request.QueryString["AcceptsCookies"]; 
     } 
    } 

} 

TestForCookies.aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string redirect = Request.QueryString["redirect"]; 

    string acceptsCookies = null; 
    // Was the cookie accepted? 
    if (Request.Cookies["TestCookie"] == null) 
    { 
     // No cookie, so it must not have been accepted 
     acceptsCookies = "0"; 
    } 
    else 
    { 
     acceptsCookies = "1"; 
     // Delete test cookie 
     Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1); 
    } 

    string url = redirect + "?AcceptsCookies=" + acceptsCookies; 


    Response.Redirect(url); 
} 
+0

¿Możesz pisać kod? –

+0

W rzeczywistości cały kod można znaleźć w dokumencie, z którym się łączyłem. – KoturB

Odpowiedz

0

Myślę, że to rozwiązałem. Przekierowanie nie zostało wykonane prawidłowo z powodu nieprawidłowych adresów URL.

Login.aspx.cs

if (!Page.IsPostBack) 
    { 
     if (Request.QueryString["AcceptsCookies"] != null) 
     { 
      if (Request.QueryString["AcceptsCookies"].ToString() == "0") 
      { 
       LoginBox.InstructionText = Resources.Resource.Login10; 
      } 
     } 
     else 
     { 
      Response.Cookies["TestCookie"].Value = "ok"; 
      Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1); 

      string url = Request.Url.ToString(); 
      url = url.Replace("ReturnUrl", "AcceptsCookies=&ReturnUrl"); 

      Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(url))); 
     } 

    } 

TestForCookies.aspx.cs

string redirect = Request.QueryString["redirect"]; 

    string acceptsCookies = null; 
    // Was the cookie accepted? 
    if (Request.Cookies["TestCookie"] == null) 
    { 
     // No cookie, so it must not have been accepted 
     acceptsCookies = "0"; 
    } 
    else 
    { 
     acceptsCookies = "1"; 
     // Delete test cookie 
     Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1); 
    } 

    redirect = redirect.Replace("AcceptsCookies=", "AcceptsCookies=" + acceptsCookies); 

    Response.Redirect(BasePage.ResolveUrl(redirect), true); 
} 
+0

To działało, ale po kilku zabawach z ustawieniami prywatności IE udało mi się go złamać. Teraz pomimo "Zaakceptuj wszystkie ciasteczka" pojawia się komunikat o błędzie, że pliki cookie nie są włączone. Denerwujący! – KoturB

2

To może być włochate. To, co zrobiłem na mojej stronie logowania, to w zasadzie następujące kroki:

  1. Po kliknięciu przycisku "Zaloguj się" rver, sprawdź poświadczenia użytkownika. Jeśli logowanie się powiodło ...
  2. Ustaw moje ciasteczko i wyślij JS, aby kliknął ukryty przycisk "Potwierdź pliki cookie" z powrotem do przeglądarki. Jest to dodatkowa wycieczka w obie strony, ale plik cookie powinien być częścią ładunku w obie strony.
  3. Po powrocie na serwer w procedurze obsługi przycisku "Potwierdź pliki cookie", sprawdzam, czy nie ma pliku cookie. jeśli tam jest, jesteśmy dobrzy i przekierowuję. Jeśli nie, wysyłam treść z informacją, że pliki cookie są wyłączone z linkiem, jak je włączyć.

Mam nadzieję, że to pomoże!

Powiązane problemy