添加auth cookie后,User.Identity.IsAuthenticated为false

时间:2012-06-20 07:10:32

标签: asp.net

我有以下代码将身份验证Cookie添加到响应并重定向到主页

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, true);
Response.Cookies.Add(authCookie);
Response.Redirect("~/Home/Home.aspx");

但是在Home.aspx中,User.Identity.IsAuthenticated仍然是假的。为什么?

2 个答案:

答案 0 :(得分:2)

终于搞定了。简而言之就是

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
        username,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        isPersistent,
        userData,
        FormsAuthentication.FormsCookiePath);

      // Encrypt the ticket.
      string encTicket = FormsAuthentication.Encrypt(ticket);

      // Create the cookie.
      Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

我关注了来自this MSDN页面的代码示例:

答案 1 :(得分:1)

您不必自己将cookie添加到响应中。

你这样做:

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, true);
Response.Cookies.Add(authCookie);
Response.Redirect("~/Home/Home.aspx");

但是,您可以使用GetAuthCookie而不是SetAuthCookie然后添加它,而不是HttpCookie authCookie = FormsAuthentication.SetAuthCookie(username, true); Response.Redirect("~/Home/Home.aspx");

{{1}}

当您查看MSDN page for SetAuthCookie时,您会发现它不仅会将Cookie添加到响应(或URL),还会创建并加密票证:

  

为提供的用户名创建身份验证票证,并将其添加到响应的cookie集合中,如果您使用的是无Cookie身份验证,则将其添加到URL。

当你尝试自己添加cookie时,这可能就不起作用了。