3

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");
}
4

1 に答える 1

0

イベントは、ページごとに何度も呼び出される場合があります。- https://stackoverflow.com/a/5947309/57883if/elseを囲む ものがありませんResponse.Redirect("/employee/home.aspx");

このイベントの代わりにカスタム属性を使用してみてください

于 2012-08-07T12:23:53.313 に答える