我正在 C# Web 应用程序中设置混合模式身份验证。我在WindowsAuthentication网站中设置了AuthCookie,然后尝试重定向到FormsAuthentication网站。我认为cookie在正确的路径和所有内容中,因为Context.Request.IsAuthentication是正确的。不幸的是,我不断被重定向到FormsAuthentication网站的登录页面,就好像我没有设置AuthCookie一样。这是怎么回事?
我不熟悉身份验证在 ASP.NET 中的工作原理,所以请像我 5 岁一样向我解释一下。谢谢,:)
编辑:这是WindowsAuth站点的Global.asax中的事件,该事件使cookie。此站点当前驻留在 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"); }
每页可以多次调用该事件。 - https://stackoverflow.com/a/5947309/57883您没有围绕Response.Redirect("/employee/home.aspx");
的if/else
尝试使用自定义属性而不是此事件