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"); }
的你有任何的代碼段,你可以分享? – ScottieMc
我不確定首先發布什麼代碼,但編輯基本上是這樣。 – Gagege
最好的方法是使用http調試器來嗅探請求並查看cookie是否到達表單站點。如果是的話,那麼兩臺機器上的加密密鑰可能不同,所以cookie不能被解密或者cookie的名稱是錯誤的。如果不是,那麼您必須分析流程以查看丟失cookie的原因是什麼。 –