我有以下代码将身份验证Cookie添加到响应并重定向到主页
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, true);
Response.Cookies.Add(authCookie);
Response.Redirect("~/Home/Home.aspx");
但是在Home.aspx中,User.Identity.IsAuthenticated
仍然是假的。为什么?
答案 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时,这可能就不起作用了。