C# Web アプリで混合モード認証を設定しています。WindowsAuthentication Web サイトで AuthCookie を設定してから、FormsAuthentication Web サイトにリダイレクトしようとしました。Context.Request.IsAuthenticated が true であるため、Cookie は正しいパスにあると思います。残念ながら、AuthCookie を設定していないかのように、FormsAuthentication Web サイトのログイン ページにリダイレクトされ続けます。何が起こっている?
ASP.NET で認証がどのように機能するかについて詳しくないので、5 歳のように説明してください。ありがとう、:)
編集: これは、Cookie を作成する WindowsAuth サイトの Global.asax のイベントです。このサイトは現在、FormsAuth サイトの「下」のパス /authentication にあります。
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"); }