AuthCookie已设置,仍被重定向到login.aspx

时间:2012-06-21 15:38:14

标签: c# asp.net authentication forms-authentication mixed-authentication

我正在C#网络应用中设置混合模式身份验证。我在WindowsAuthentication网站中设置了AuthCookie,然后尝试重定向到FormsAuthentication网站。我认为cookie是在正确的路径和一切因为Context.Request.IsAuthenticated是真的。不幸的是,我一直被重定向到FormsAuthentication网站的登录页面,就像我没有设置AuthCookie一样。发生了什么事?

我不熟悉ASP.NET中的身份验证如何工作所以请向我解释,就像我是5.谢谢,:)

edit:这是生成cookie的WindowsAuth站点的Global.asax中的事件。此站点当前位于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");
}

1 个答案:

答案 0 :(得分:0)

每页可多次调用该事件。 - https://stackoverflow.com/a/5947309/57883if/else

周围没有Response.Redirect("/employee/home.aspx");

尝试使用自定义属性而不是此事件