3

我正在C#web應用程序中設置混合模式身份驗證。我在WindowsAuthentication網站中設置了AuthCookie,然後嘗試重定向到FormsAuthentication網站。我認爲cookie是正確的路徑,因爲Context.Request.IsAuthenticated是真實的。不幸的是,我一直在重定向到FormsAuthentication網站的登錄頁面,就像我沒有設置AuthCookie一樣。到底是怎麼回事?AuthCookie已設置,仍然被重定向到login.aspx

我不熟悉的認證在ASP.NET如何工作的,請向我解釋像我5.謝謝:)

編輯:這裏是在在Global.asax事件製作cookie的WindowsAuth網站。此站點當前駐留在FormsAuth站點下的路徑/身份驗證中。

void Application_PostAuthenticateRequest(Object sender, EventArgs e) 
{ 
    WindowsIdentity ident = WindowsIdentity.GetCurrent(); 
    WindowsPrincipal p = new WindowsPrincipal(ident); 
    if (p.Identity.IsAuthenticated) 
    { 
     HttpCookie cookie = FormsAuthentication.GetAuthCookie(p.Identity.Name, false); 
     FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); 
     // Store roles inside the Forms cookie. 
     FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(
      ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, 
      ticket.IsPersistent, "", ticket.CookiePath); 
     string encTicket = FormsAuthentication.Encrypt(newTicket); 
     Context.Response.Cookies.Add(new HttpCookie(".GWBTroubleTickets", encTicket)); 
    } 
    Response.Redirect("/employee/home.aspx"); 
} 
+0

的你有任何的代碼段,你可以分享? – ScottieMc

+0

我不確定首先發布什麼代碼,但編輯基本上是這樣。 – Gagege

+0

最好的方法是使用http調試器來嗅探請求並查看cookie是否到達表單站點。如果是的話,那麼兩臺機器上的加密密鑰可能不同,所以cookie不能被解密或者cookie的名稱是錯誤的。如果不是,那麼您必須分析流程以查看丟失cookie的原因是什麼。 –

回答

相關問題