0

我使用ASP.NET開發網站。現在我進行驗證。FormsAuthenticationTicket在Response.Redirect操作後消失

授權由另一個Web服務完成。如果網絡服務的答案是成功的,我創建一張票:

var ticket = new FormsAuthenticationTicket(1, param.Login, DateTime.Now, DateTime.Now.AddDays(1), false, string.Empty, FormsAuthentication.FormsCookiePath); 
      var encTicket = FormsAuthentication.Encrypt(ticket); 

      var AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName) 
      { 
       Value = encTicket, 
       Expires = DateTime.Now.AddDays(1) 
      }; 

      Response.Cookies.Set(AuthCookie); 

此代碼添加了認證cookie。但是,如果我在之前的代碼之後添加下一個字符串:

   Response.Redirect("<redirect address>"); 

cookie在重定向後消失。

爲什麼發生了?認證這裏

的web.config部分:

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSAUTH" loginUrl="~/login.ashx" /> 
</authentication> 
+0

在Response.Redirect()中,你是指導用戶在同一個網站內還是外部網站?如果您在同一個網站中直接訪問,則在完成Response.Redirect()後,登錄頁面是否出現? –

+0

我將用戶重定向到同一個站點。 – Elena

回答

0

可能發生的cookie數據正在與Cookie相關的有超過它的加密格式允許的最大值。未加密的數據不會太大。

大尺寸的cookie可能導致cookie從響應頭中丟失。以下修補程序是值得嘗試:

  • 以未加密格式降低數據集的量在cookie
  • 嘗試餅乾只有一次。這樣,您將得到確認,這確實是餅乾這是創造一個問題

POST給出了餅乾大小的好信息的大小。